如何防御XSS攻击

XSS(Cross Site Scripting,跨站脚本攻击)

xss全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有JavaScript的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。

运行预期之外的脚本带来的后果有很多中,可能只是简单的恶作剧————一个关不掉的窗口:

也可以盗号或者其他未授权的操作。

Xss是实现CSRF的诸多途径中的一条,但绝对不是唯一的一条。一般习惯吧通过Xss来实现的CSRF称为XSRF。


如何防御XSS攻击?

理论上,所有可输入的地方没有对输入数据进行处理的话,都存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限与script。防御XSS攻击攻击最简单直接的方法,就是过滤用户的输入。

如果不需要用户输入HTML,可以直接对用户的输入进行HTMLescape。

下面一小段脚本

<script>window.location.href=”http://www.baidu.com”;</script>

经过 escape 之后就成了:

&lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script

&gt; 

它现在会像普通文本一样显示出来,变得无毒无害,不能执行了。当我们需要用户数据html的时候,需要用户输入的内容做更加小心细致的处理。仅仅粗暴地去掉scriot标签是没用的。任何一个合法html标签都可以添加onclick一类的事件属性来执行JavaScript。更好的方法可能是,将用户的输入使用html解析库进行解析,获取其中的数据。然后根据用户原有的标签属性,重新构建html元素树。构建过程中,所有的标签、属性都只从白名单中拿取

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值