概述
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);
白名单过滤
根据白名单的标签和属性对数据进行过滤,以此来对可执行的脚本进行清除(如script标签,img标签的onerror属性等)
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
String result = Jsoup.clean(source, Whitelist.basic());
默认的基础白名单配置
参考资料:
- XSS攻击
- Java处理富文本中的XSS攻击
最后
以上就是单薄裙子为你收集整理的XSS漏洞及修复方案的全部内容,希望文章能够帮你解决XSS漏洞及修复方案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复