XSS跨站漏洞最终形成的原因是对输入与输出没有严格过滤。
1、输入与输出
在HTML中,<,>,",',&都有比较特殊的意义。HTML标签,属性就是由这几个符合组成的。PHP中提供了 htmlspecialchars()、htmlentities()函数可以把一些预定的字符转换为HTML实体。
&成为&
"成为"
'成为'
<成为<
成为>
2、HttpOnly
HttpOnly对防御XSS漏洞不起作用,主要是为了解决XSS漏洞后续的Cookie劫持攻击。
HttpOnly用来阻止客户端脚本访问Cookie。带有HttpOnly的Cookie将不能被JavaScript获取。
HttpOnly只是防御Cookie盗取的一种手段,并不是绝对安全,防御XSS的关键还是要靠过滤输入与输出。