如何防止XSS跨站脚本攻击
1、反射型XSS
反射型XSS只是简单的把用户输入的数据“反射”给浏览器,黑客往往需要诱使用户点击一个恶意链接才算攻击成功。

2、储存型XSS
这种XSS危害较大,一般由用户输入带有恶意的javascript代码,用户提交保存后,其他用户访问的页面输出了那一行恶意代码,代码会在浏览器被执行。
3、DOM Based XSS
通过修改页面的DOM节点形成的XSS,称之为DOM Based XSS。
1、设置HttpOnly
现在HttpOnly已经逐渐成为一个标准。浏览器将禁止页面的JavaScript访问带有HttpOnly属性的Cookie。现在主流浏览器都已支持HttpOnly。
如果是业务需要增加cookie,同时需要给这个cookie设置为HttpOnly属性。
例如:
response.setHeader("Set-Cookie","cookiename=value;
Path=/;www.baidu.com=domainvalue;Max-Age=seconds;HTTPOnly");

2、web服务器设置httpOnly
不同的web服务器设置方式不同,而且很多新版本web服务器已经默认开启,这里不做过多介绍。
3、输入检查
在获取到用户输入数据后要先检查数据中是否包含<、>、‘、“等危险字符,如果包含要考虑对这些字符进行过滤或转码。
一般是在web应用中配置过滤器统一对所有输入数据进行过滤。
4、输出检查
在html标签或在html属性中输出变量时,如果未作任何处理都可能产生XSS。
防御方法:采用HTMLEncode,在OWASP ESAPI中推荐了一种更严格的HTMLEncode。除了字母、数字外,其他所有的特殊字符都被编码成HTMLEnttities。在<script>标签中输出时使用JavaScriptEncode。