我正在使用一個驗證庫,從輸入中刪除一些常見的XSS攻擊到我的Web應用程序。它工作正常,我也逃避了我提供的一切,以防止XSS攻擊。此代碼如何防範XSS攻擊?
該庫包含該線路XSS過濾過程的一部分:
// Protect query string variables in URLs => 901119URL5918AMP18930PROTECT8198
str = str.replace(/\&([a-z\_0-9]+)\=([a-z\_0-9]+)/i, xss_hash() + '$1=$2');
xss_hash
返回的隨機字母數字字符的字符串。基本上,它需要有一個查詢字符串的URL,並軋液有點:
> xss('http://example.com?something=123&somethingElse=456&foo=bar')
'http://example.com?something=123eujdfnjsdhsomethingElse=456&foo=bar'
除了有一個bug(它只是「保護」一個參數,不是所有的人),在我看來,整個事情是本身一個錯誤。
所以我的問題是:什麼樣的攻擊矢量是這種替換防護?
如果它沒有真正做任何事情,我想提交一個補丁到完全刪除它的項目。如果它合法地保護了圖書館的用戶,我想提交一個補丁來修復現有的錯誤。
'xss_hash'調用Math.random(),所以它肯定是隨機的。但是你是對的 - 我以前沒有看到它,但是在它下面有一行代碼,用'&'代替'xss_hash()'。但它不能正常工作,因爲'xss_hash'是隨機的... – chesles