2013-01-08 45 views
4

我有喜歡它重定向到URL從參數查詢字符串頁:
page.html中的redirectUrl = index.html的
的頁面裏面,我有這樣的代碼:
window.localtion.href = redirectUrl;
這是要求使用參數重定向url。該頁面包含安全敏感數據。有人可以使用JavaScript這樣的網址:
page.html?redirectUrl = javascript:alert(document.getElementById(「password」)。value)
安全數據可以被盜。

如何防止繞過javascript代碼到window.localtion.href?防止使用JavaScript的window.location的

+0

在這種情況下,誰會竊取數據?用戶?無論如何,他們可以在頁面上獲取任何數據。 –

+3

@Pekka웃 - 用戶(愛麗絲)可以從Malory's(攻擊者)網站上鍊接到Bob的網站。這是一個經典的XSS攻擊。 – Quentin

+0

@Quentin啊,現在明白了,謝謝。 –

回答

1

這似乎是它會只要你不被它重定向工作:

的Javascript:

var field = document.getElementById("redirectUrl"); 
var newValue = String(field.value); 
alert(newValue); 

基本上,使用String構造函數來「消毒」的輸入。

這可能會幫助更多的其他情況:

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet

總體來說,我不會使用JavaScript來淨化輸入建議。如果您處理真正敏感或重要的數據,強烈建議您使用服務器端語言來驗證和消毒輸入。

1

你可以嘗試把URL中的anchor element和檢查的協議:

var anchor = document.createElement("a"); 
anchor.href = redirectUrl; 

if(anchor.protocol != "javascript:") { 
    window.localtion.href = redirectUrl; 
} 

但是,我不知道該瀏覽器的支持有多好這一點,因爲MDN列出了它作爲一個HTML5功能。