当前位置:   article > 正文

XSS漏洞及修复方案_xss漏洞修复

xss漏洞修复

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等内容。

XSS的原理是WEB应用程序混淆了用户提交的数据和脚本的代码边界,导致浏览器把用户的输入当成了脚本代码来执行。XSS的攻击对象是浏览器一端的普通用户。

XSS攻击类型

反射型XSS

反射型XSS,又称非持久型XSS。也就是攻击相当于受害者而言是一次性的,具体表现在受害者点击了含有的恶意JavaScript脚本的url,而Web应用程序只是不加处理的把该恶意脚本“反射”回受害者的浏览器而使受害者的浏览器执行响应的脚本。

存储型XSS

存储型XSS,也就是持久型XSS。攻击者上传的包含恶意js脚本的留言等信息被Web应用程序保存到数据库中,Web应用程序在生成新的页面的时候如果包含了该恶意js脚本,这样会导致所有访问该网页的浏览器解析执行该恶意脚本。这种攻击类型一般常见在博客、论坛等网站中。

DOM型XSS

DOM,全称是Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构和样式。
DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞,而且不需要与服务器进行交互。
客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

XSS危害

XSS可以造成的危害有很多,常见的有以下:

  • 网络钓鱼,包括获取各类用户账号
  • 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
  • 劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、强制发表日志、电子邮件等
  • 强制弹出广告页面、刷流量等
  • 网页挂马
  • 进行大量的客户端攻击,如DDoS
  • 获取客户端信息,如用户的浏览历史、真实ip、开放端口等
  • 控制受害者机器向其他网站发起攻击
  • 结合其他漏洞,如CSRF,实施进一步危害
  • 传播跨站脚本蠕虫

XSS修复方案

输入编码转义

对输入的数据进行HTML转义,使其不会识别为可执行脚本

Spring HtmlUtils

String result = HtmlUtils.htmlEscape(source);
  • 1

白名单过滤

根据白名单的标签和属性对数据进行过滤,以此来对可执行的脚本进行清除(如script标签,img标签的onerror属性等)

<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.13.1</version>
</dependency>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
String result = Jsoup.clean(source, Whitelist.basic());
  • 1

默认的基础白名单配置
在这里插入图片描述


参考资料:

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

闽ICP备14008679号