如何在浏览器启用XSS筛选器
工具:
浏览器
*** 如下:
1、打开浏览器,在最上面菜单栏点击【工具】。
2、在工具弹出的下拉框中点击【Internal选项】。
3、在Internal属性中,选择【安全设置】,在安全设置中点下方【自定义级别】。
4、最后,在大约中间位置,点击启用XSS筛选器,确定即可。
2019-08-22/XSS过滤器
做后端的同学都知道,XSS过滤器,防sql注入过滤器等是常用的 。关于什么是XSS攻击,网上的说法很多,自己百度一下吧。我们只需要加入一个xss过滤器就可以了。但大部分的文章都是针对普通的get/post请求进行的参数xss过滤,如果是post+appliccation/json等提交方式就显得无能为力了。很显然,对于普通的get/post,就按照之前的方式过滤参数就可以了(对于multipart等文件上传之类的参数做校验,这里暂时没有提供)。
为了方便起见,首先定义一些常量吧:
接下来需要分别针对不同的表单提交类型写包装类,对于普通的get/post请求的包装类:
对于post+application/json的请求,对应的包装类:
接下来就是校验啦:
45. 从零开始学springboot撸一个Xss过滤器-注解实现
上章通过Filter实现了Xss全局过滤器
可能小伙伴还有点不满, 全局意味着“一刀切”,
虽然我们也有白名单黑名单设置, 但是, 白名单黑名单针对的是整个 *** 或整个实体类
举个例子, 我定义了个实体
可能业务上有限制(比如name限制了只有5个字符长),
那么name其实不可能存在Xss注入风险了,
程序只需要对info和des属性做转义即可
如果采用Filter, 意味着People的所有属性都会检测转义, 好像没啥必要!
那么, 可以针对性的指定字段进行Xss的过滤转义么?
为了应对这样的需求, 咸鱼君采用Aop注解来实现这么个Xss过滤器.
PS: 和Filter一样, 我们统一对入参Xss过滤, 确保参数的处理方式统一! 所以, 程序中获取的参数值都是转义后的数据!!
废话不多说, 往下看!
加入必要的pom依赖
针对 *** , 参数, 属性分别定义三个注解
XssMethod
XssParam
XssField
针对注解实现切面Aspect
XssAspect
注释写的很详细, 就不多废话了!
接下来我们写个案例来测试测试
首先在启动类上启用切面
定义一个实体People, 并对info,des属性加上注解进行xss过滤
最后编写controller
json方式
键值对方式
浏览器的Xss过滤器机制是什么,为什么有些反射型Xss不会触发过滤器
首先要说明的是 它是webkit的一个模块,而非chrome ,所以Safari和360安全浏览器极速模式等webkit内核的浏览器都有XSS过滤功能.
过滤方式:
通过模糊匹配 输入参数(GET query| POST form data| Location fragment ) 与 dom树,如果匹配中的数据中包含跨站脚本则不在输出到上下文DOM树中.另外,匹配的规则跟CSP没有什么关系,最多是有参考,CSP这种规范类的东西更新速度太慢跟不上现实问题的步伐.
关闭模式:
因为它有可能影响到业务,所以浏览器提供了关闭它的HTTP响应头.
X-XSS-Protection: 0
绕过方式:
因为专门做这方面的原因所以对绕过也有所了解,目前我发布过的一个bypass 0day还可以继续使用.
svgscript xlink:href=data:,alert(1)/script/svg
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。