雖然如今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