在閱讀Eric Lawrence的this article之後,我看到了這個測試頁http://www.enhanceie.com/test/xss/,它模擬了Reflective XSS Protection
的用法。反射式XSS保護 - 澄清?
現在,根據google chromium:
XSS過濾器檢查一個腳本,是關於一個網頁 上運行,是否也存在在獲取該網頁請求。如果請求中存在 腳本,這很明顯地表明 Web服務器可能已被誘騙反映該腳本。
所以,如果我上傳到服務器:
<script>alert("bang! script injection\n"+document.cookie);</script>
和瀏覽器也看到它在通過URL請求:
http://webdbg.com/test/xss/Hello.asp?txtName=%3Cscript%3Ealert%28%22bang%21+script+injection%5Cn%22%2Bdocument.cookie%29%3B%3C%2Fscript%3E
話,就說明這個錯誤(控制檯):
XSS審計員拒絕執行 'http://webdbg.com/test/xss/Hello.asp?txtName=%3Cscript%3Ealert%28%22bang%21+script+injection%5Cn%22%2Bdocument.cookie%29%3B%3C%2Fscript%3E' 中的腳本,因爲它的源代碼在請求中找到。由於服務器既沒有發送'X-XSS-Protection'也沒有發送'Content-Security-Policy'頭部,因此審計員啓用了 。
可是招潮蟹不告訴我,頁面的確得到了腳本運行:
問:
至於對付XSS的解決方案是html編碼解碼,
我應該如何將這兩種解決方案結合起來使用?
我的意思是我可以使用html編碼和腳本永遠不會運行在我的網頁,或者,我可以使用這個頭...?
我很困惑。
就像一個說明,有一些攻擊利用瀏覽器中的XSS過濾器,通過附加到查詢字符串的腳本片段,攻擊者_不想在受害者站點中運行。 – SilverlightFox