[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

相关文章
相关标签/搜索