2014-02-06 40 views
2

我想了解Fortify在這裏看到什麼風險。我對XSS工作很陌生,在確定這不是一個真正的問題之前,我想確定一下。我看不出一個人如何使用這個代碼,但搞亂了他們自己的電腦,所以我很好奇,如果我失去了一些東西。HP Fortify問題,可能的XSS可變性?

這是源文本 Fortify說,window.location.href被分配的行是漏洞。發送給瀏覽器的「未驗證」數據。

<c:if test="${isExternalUser}"> 
     <script type="text/javascript"> 
      $(function(){ 
       $('#logoutLink').on('click', function(){ 
        var logoutUrl = window.appSettings.context + '/external/logout/'; 
        $.get(logoutUrl).done(function(){ 
         window.location.href = window.location.protocol + "//" + window.location.host + window.appSettings.context + "/?${ssw:encodeJS(header['policy-signout'])}";     
        }); 
       }); 
      }); 
     </script> 
    </c:if> 

Screenshot from Fortify

至於我可以告訴大家,這裏沒有風險。

回答

1

我看不到任何風險。

唯一未經驗證的外部給瀏覽器的數據是

${ssw:encodeJS(header['policy-signout'])} 

其被正確地被JS編碼。也許Fortify沒有考慮到這個事實。

您可以嘗試分割該行(作爲測試),以確保它是不被識別爲執行JS編碼的encodejs

var policySignout = "${ssw:encodeJS(header['policy-signout'])}"; 

window.location.href = window.location.protocol + "//" + window.location.host + window.appSettings.context + "/?" + policySignout; 
+0

謝謝你,據我可以告訴Fortify的只是錯在這裏(像其他許多次)謝謝你的關心驗證 – njfife

+0

我也是新來強化,但抱怨Fortify的原因顯然是窗口。 location.protocol被使用,可以僞造(不要問我如何以及何時) –