参考资料:
[1]. 浅谈XSS攻击的那些事(附常用绕过姿势)
[2]. XSS(偷你的Cookies)
- 什么是XSS
XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
例子
用户在留言板中输入JS代码如下
<script>alert(“hey!you are attacked”)</script>
留言板就变成
<html>
<head>
<title>留言板</title>
</head>
<body>
<div id=”board”
<script>alert(“hey!you are attacked”)</script>
</div>
</body>
</html>
输入的代码会在访问网站的时候执行。
危害
- 窃取cookie值
- 劫持流量实现恶意跳转
插入跳转代码
<script>window.location.href="http://www.baidu.com";</script>
反射型XSS和存储型XSS
JS代码有没有存储在数据库。
反射型XSS例子:网站有一些回显的功能,比如我们在URL参数可能会重新返回到HTML页面,如果这个参数是一段JS代码,那么显示HTML页面的时候可能就会执行JS代码。
存储型XSS:留言板的例子就很经典,留言的脚本被存储到数据库中。
反射型XSS
存储型XSS
XSS获取cookie的过程
在目标网站上嵌入一段获取cookie的JS代码,并且向我们攻击的服务器发送请求,请求的URL上加上cookie的内容。
防范手段
首先是过滤。对诸如<script>、<img>、<a>等标签进行过滤。
其次是编码。像一些常见的符号,如<>在输入的时候要对其进行转换编码,这样做浏览器是不会对该标签进行解释执行的,同时也不影响显示效果。
最后是限制。通过以上的案例我们不难发现xss攻击要能达成往往需要较长的字符串,因此对于一些可以预期的输入可以通过限制长度强制截断来进行防御。
网友评论