定义
XSS(Cross Site Scripting)攻击,中文名为跨站脚本攻击,是一种常见的网页攻击方式。
攻击者在web页面中插入一些恶意的javascript
或HTML
代码,当用户浏览该页面的时候,嵌入到web页面中的javascript
/HTML
代码会被执行,从而达到攻击目的。
一个简单的例子就是网页中的评论功能,用户编写一段javascript
代码(见下面)提交到服务器,如果不做过滤就直接显示出来的话,就会导致用户一打开页面就会有弹窗提示“你被攻击了”。
<script>window.alert("你被攻击了")</script>
防范手段
对用户数据进行过滤
这种攻击方式再次印证了“永远不要相信用户提交过来的数据”的真理,所以要防范这种攻击,就要对数据进行过滤,在用户提交时过滤,或者在输出页面时过滤都可以。
在PHP中可以使用htmlspecialchars或htmlentities函数,这两个函数都可以把特殊字符转换为HTML实体,区别在于,前者只会转换一部分字符,后者会转换全部特殊字符。
cookie设置为http only
较多XSS攻击注入的javascript
脚本代码都是为了获取用户的cookie信息,把cookie设置为http only,可以禁止javascript
读取。因此这种方法一定程度上也能防范XSS攻击。
具体在PHP中是将setcookie函数的
httponly
参数设置为true