web漏洞处理之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的理解所做出的处理,如果有更好的处理方法的话,也欢迎大家来补充

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值