1 什么是XSS跨站脚本攻击问题?
XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
2 举一简单例子
比如我们提供给用户留言的页面,然后我们将用户输入的内容保存到数据库中,下次用户访问时回显用户此前填写的内容,如果用户在输入框中输入一段script标签包裹着的JavaScript脚本,比如:
<script>alert("hello XSS")</script>
如果没有经过任何处理,直接将这端内容回显到页面上:
<html><head><title>输入内容</title></head>
<body><div id="content"<script>alert{"hello,XSS"}</scipt>
</div></body>
</html>
那么浏览器解析到这段脚本的时候就会执行它,会在页面上出现一个alert弹窗,这就是最简单的XSS攻击的方式
3 XSS攻击的危害
3.1 窃取网页cookie
注入的脚本中通过ducument.cookie获取网页cookie,并将cookie发送给第三方网站
3.2 流量劫持恶意跳转
例:
<script>window.location.href="http://www.baidu.com";</script>
4 如何预防XSS?
- 对可能存在注入的标签比如
<script>、<img>、<a>
等进行过滤 - 转码,将构成注入标签的尖括号或者引号进行转义,避免发送注入
- 限制输入长度,因为注入一般需要输入较长的字符串,因此限制输入度也可以一定程度上降低被攻击的可能