2017-09-08 51 views
0

安全補丁我有下面的js代碼爲window.location.href

var a = window.location.href.substring(0,window.location.href.lastIndex('/')+1) + "logout.jsp"; 

setTimeout(function(){ 
     window.location.href = a; 
},1000); 

當我運行上述文件設防掃描,它顯示與動態代碼評估上述線路存在安全隱患:代碼注入。 現在我無法理解如何解決它。我是否需要爲window.href添加任何編碼器或如何解決此問題。 另外,如果我們有編碼,我需要做什麼。

+1

我真的不知道如何利用它來注入任意代碼,因爲'location.href'是由您的服務器生成的(除非URL的某些部分來自任意用戶輸入)。但是,您的代碼可以減少只是''location.href =「logout.jsp」'它做同樣的事情。 –

+1

@Derek朕會功夫在這種情況下,我也看不出注射是如何發生的。但是有人可以在URL中的'#'之後推送JS,如果處理不當,可能會產生問題。因此,可能該工具每次看到'window.location.href'被操縱時報告誤報。 – Nisarg

+0

您的Javascript代碼是否直接駐留在HTML頁面或單獨的js文件中? –

回答

1

如果我正確理解邏輯,您正嘗試獲取沒有頁面名稱的url路徑,然後您打算重定向到它。

如果這是正確的,你也許可以得到它使用工作,

var a = "logout.jsp"; 

setTimeout(function(){ 
     window.location.href = a; 
},1000); 

應該在主要擺脫脆弱的,但我不能完全肯定,如果該工具檢測到任何其他漏洞在裏面。

0

我發現下面的鏈接...也許這可以幫助你:

https://security.stackexchange.com/questions/151806/jquery-js-dynamic-code-evaluation-code-injection-on-settimeout-line

這是一個假陽性。

使用HP Fortify和has confused developers before報告虛假代碼注入漏洞是衆所周知的問題 。 Fortify 對Javascript代碼進行了基本的靜態分析,無法深入瞭解它是如何工作的。作爲@AlexanderOMara 建議,它只是似乎發現潛在危險 setTimeout()功能,可作爲setInterval(),採取將作爲代碼執行的字符串 的說法,就像eval()一樣。這 排序漏洞,該工具旨在發現:

setTimeout('alert(' + document.location.hash.split('#')[1] + ')', 0); 

但在你的情況下,沒有用戶提供的,未經過濾的輸入 setTimeout()功能,因此它看起來是安全的。從 離開你從鏈接線程得出一個很好的結論:

我的建議是停止運行惠普fortify報告。 或支付5000美元,或任何美元去他們的班,所以你可以真正瞭解他們的malarkey。

通過回答Arminius