【前端安全】浅谈XSS攻击和防范

定义

XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。

恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

分类

大分类小分类原理
非存储DOM型① 不需要经过服务器 ② 访问者的浏览器执行相应的脚本
反射型① 通过url将参数传递给服务器 ② 服务器不处理,直接“反射”回访问者的浏览器 ③ 访问者的浏览器执行相应的脚本
存储型存储 型① 通过url将参数传递给服务器 ② 服务器经过存储后再“反射”回访问者的浏览器 ③ 访问者的浏览器执行相应的脚本

反射型XSS的示意图:
在这里插入图片描述
存储型XSS的示意图:
在这里插入图片描述

攻击

1. 大小写绕过

这个绕过的前提是,网站仅仅过滤了

利用语句:

http://192.168.1.102/xss/example2.php?name=<sCript>alert("hey!")</scRipt>
2. 并不是只有script标签才可以插入代码

只要任何能执行js的绑定事件都可以。最常用的是img的onerror,比如

http://192.168.1.102/xss/example4.php?name=<img src='w.123' onerror='alert("hey!")'>
3. 编码脚本代码绕过关键字过滤

有的服务器会对关键字(如alert)进行过滤,这时我们可以尝试将关键字进行编码后再插入。

不过直接显示编码的话是不能被浏览器执行的,所以我们需要用一个eval语句来实现。eval()会将编码过的语句解释后再执行。

例如 alert(1) 编码过后是 \u0061\u006c\u0065\u0072\u0074(1)

所以构建出来的攻击语句如下:

http://192.168.1.102/xss/example5.php?name=<script>eval(\u0061\u006c\u0065\u0072\u0074(1))</script>

防范

1. 过滤

对诸如<script><img><a>等标签进行过滤。

2. 编码

将特殊字符(如<等)转换为HTML实体。

3. 限制

一般xss攻击要能达成往往需要较长的字符串,因此对于一些可预期的输入,可以通过限制长度强制截断来进行防御。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值