虽然如今IE10和chrome能够自动过滤掉 javascript
<script>alert('XSS')</script>可是
<!DOCTYPE html> <head> <title>Oh!NO!</title> <script type="text/javascript"> //<![CDATA[ var xss = "</script><script>alert('XSS');</script>"; //]]> </script> </head> <body> <p>弹出了XSS框?那就赶忙补漏洞去吧!</p> </body> </html>
<!DOCTYPE html> <head> <title>Oh!NO!</title> <script type="text/javascript"> var xss = "</script><script>alert('XSS');</script>"; </script> </head> <body> <p>弹出了XSS框?那就赶忙补漏洞去吧!</p> </body> </html>
防护方法: php
1.HttpOnly html
httpOnly标签至今已经逐渐成为一个标准,浏览器禁止JS访问带有HttpOnly的Cookie,HttpOnly能够选择性的加载任何一个Cookie值上 java
response.setHeader("Set-Cookie","cookiename=value; Path=/;Domain=domainvalue;Max-Age=seconds;HTTPOnly");
二、输入检查 chrome
处理富文本:采用XSS filter 浏览器
java:https://www.owasp.org/index.php/Category:OWASP_AntiSamy_Project 安全
php:http://htmlpurifier.org/ cookie
三、输出检查 dom
a.安全的编码函数:
输出对象为html时,采用HtmlEncode,HtmlEncode不是专用名词,他只是一种函数实现。他的做用是将字符转换成HTMLEntities,对应的标准是ISO-8859-1
至少须要转换如下字符: xss
& --> & < -->< > --> > " --> " ' --> ' / --> /
4.防护DOM Based XSS:复合的XSS防护
从$var输出到<script>的时候须要作JavascriptEncode,在输出到html的时候,若是是输出到事件或者脚本,再作一次JavascriptEncode,若是输出到html,作HtmlEncode,即,输出点即为防护点。
cheatsheet for DOM Based XSS:http://code.google.com/p/domxsswiki/
JavascriptEncode:https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API