当前位置:   article > 正文

web漏洞处理之xss_基于dom的xss攻击修复

基于dom的xss攻击修复

一、xss介绍和分类

1、xss的形成原理

xss 中文名是“跨站脚本攻击”,英文名“Cross Site Scripting”。
xss也是一种注入攻击,当web应用对用户输入过滤不严格,攻击者写入恶意的脚本代码(HTML、JavaScript)到网页中时,如果用户访问了含有恶意代码的页面,恶意脚本就会被浏览器解析执行导致用户被攻击。
常见的危害有:cookie窃取,session劫持,钓鱼攻击,蠕虫,ddos等。

2、xss分类

xss根据特性和利用方式可以分成三大类,反射型xss 、存储型xss、dom型xss

反射型xss

  1. List item

一般出现在URL参数中,以及网站搜索栏中,由于需要点击包含恶意代码的URL才可以触发,并且只能触发一次,也称为非持久性xss。这种在一些较老的项目中最常见。

存储型xss

一般出现在留言板上,评论处,个人资料填写,等需要用户可以对网站写入数据的地方,比如一个论坛处由于对用户输入过滤不严格,导致攻击者在写入一段窃取cookie的恶意JavaScript代码到评论处,这段恶意代码会写入数据库中,当其他用户浏览写入代码的页面时,网站从数据库中读取恶意代码显示到网页中被浏览器执行,导致用户的cookie被窃取攻击者无需受害者密码既可以登陆账户,所以也被成为持久性xss,持久性xss比反射性xss危害性大得多。

dom型xss

DOM xss是基于dom文件对象模型的,前端脚本通过dom动态修改页面,由于不予服务端运行交互,而且代码是可见的,从前端获取dom中的数据在本地执行。常见的可以操作的dom对象有:url、location、referrer等。dom型的xss比较特殊,是一种基于dom树的xss,服务器端经常使用document.body.innertHtml等动态函数生成HTML页面,如果这些函数在引用某些变量时没有进行过滤检查,就会产生dom型的xss。dom型的xss可能是存储型的也可能是反射性的。

二、xss的处理

前端方面:较低版本的jquery,很多都存在xss漏洞,更多的是dom型xss漏洞,解决方法:1.x版本的jquery,建议升级到1.12.4或者更新的版本,2.x,3.x的我不太清楚,但是尽量使用教新版本的jquery
代码上的处理:针对反射型和存储型的xss,目前处理方式有下面几种:

1、过滤掉

将其关键字,标签替换成空字符串(建议使用正则),同时将敏感的半角字符替换成全角字符,注意host头,header,getParameter等都需要过滤下,这种方式相对来说暴力点,但是能够从根源上解决问题,缺点是可能会造成部分数据不完整。

2、转义

也就是将html转义字符,比如<的转义字符为< ,>的转义字符为> ,也可以使用org.apache.commons.lang.StringEscapeUtils.escapeHtml(str)来转义。缺点是入库时候,它的长度要比请求时候的长度要长。注意某些场景下,可能需要将其进行反转义。

3、增加安全检查

在某些的场景下,可以对用户输入的内容进行检查(建议最少要后端检查一次,必要的话,也可以加一步前端检查),如果含有xss相关的特殊字符的话,就不让其进行进一步的请求/处理。

4、json参数处理

json参数的话(@requestBody),重写jackson的MappingJackson2HttpMessageConverter的反序列化方法(deserialize),重写的时候处理下xss参数,同时注入bean对象为自定义的MappingJackson2HttpMessageConverter

三、总结

web安全无小事,需谨慎处理。以上是我个人对xss的理解所做出的处理,如果有更好的处理方法的话,也欢迎大家来补充

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/150633
推荐阅读
相关标签
  

闽ICP备14008679号