XSS跨站漏洞最終形成的原因是對輸入與輸出沒有嚴格過濾。
1、輸入與輸出
在HTML中,<,>,",',&都有比較特殊的意義。HTML標簽,屬性就是由這幾個符合組成的。PHP中提供了 htmlspecialchars()、htmlentities()函數可以把一些預定的字符轉換為HTML實體。
&成為&
"成為"
'成為'
<成為<
成為>
2、HttpOnly
HttpOnly對防御XSS漏洞不起作用,主要是為了解決XSS漏洞后續的Cookie劫持攻擊。
HttpOnly用來阻止客戶端腳本訪問Cookie。帶有HttpOnly的Cookie將不能被JavaScript獲取。
HttpOnly只是防御Cookie盜取的一種手段,並不是絕對安全,防御XSS的關鍵還是要靠過濾輸入與輸出。