[Security]XSS一直是個棘手的問題

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

& --> &amp;
< -->&lt;
> --> &gt;
" --> &quot;
' --> &#x27;
/ --> &#x2F;



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

相關文章
相關標籤/搜索