首页 » 安全知识库 » WEB安全原理 » 跨站脚本(XSS) » 正文

XSS(cross site scripting)攻击

名称:跨站脚本攻击(cross site scripting)

描述:攻击者利用应用程序的动态展示数据功能,在html页面里嵌入恶意代码。当用户浏览该页之时,这些嵌入在html中的恶意代码会被执行,用户浏览器被攻击者控制,从而达到攻击者的特殊目的。

修复方案:
总体思路用户输入数据进行过滤,输出数据进行编码。
1、对输入和URL参数进行过滤(白名单和黑名单)。
2、对输出进行编码。

在HTML中展示用户可控数据,应该进行html escape转义。
JSP代码示例
<div>#escapeHTML($user.name)</div> 
<td>#escapeHTML($user.name)</td> 
PHP代码示例
<div>htmlentities($row[“user.name”])</div> 
转义符号:
& –> &amp;
< –> &lt;
> –> &gt;
” –> &quot;
‘ –> &#39;

3、使用OWASP AntiSamy Project和OWASP ESAPI for Java来防御XSS(还有客户端的esapi4js,esapi.js)。
4、在服务端设置cookie设置为HttpOnly。

5、在DOM构造之后、渲染之前,对离屏的元素进行风险扫描。将可执行的元素(script,iframe,frame,object,embed,applet)从缓存中移除。或者给存在风险的元素,加上沙箱隔离属性。

6、在JavaScript中展示用户可控数据,需要对用户可控数据做javascript escape转义。

腾讯社区wiki:

http://wiki.open.qq.com/wiki/

发表评论