StringEscapeUtils 工具特殊字符转码,防止xss攻击

本文介绍存储型XSS攻击原理,通过实例阐述其危险,并重点讲解如何利用Apache Commons的StringEscapeUtils工具进行数据转义,防止恶意脚本执行。探讨了如何在后端过滤和前端处理中实施防御策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.xss攻击简介

XSS 即(Cross Site Scripting)中文名称为:跨站脚本攻击。XSS的重点不在于跨站点,而在于脚本的执行。那么XSS的原理是:
恶意攻击者在web页面中会插入一些恶意的script代码。当用户浏览该页面的时候,那么嵌入到web页面中script代码会执行,因此会达到恶意攻击用户的目的。那么XSS攻击最主要有如下分类:反射型、存储型、及 DOM-based型。 反射性和DOM-baseed型可以归类为非持久性XSS攻击。存储型可以归类为持久性XSS攻击。这次主要是针对存储型做预防,
存储型XSS的原理是:主要是将恶意代码上传或存储到服务器中,下次只要受害者浏览包含此恶意代码的页面就会执行恶意代码。
例子:
比如现有一个博客网站,然后攻击者在上面发布了一篇文章,内容是如下: 如果我没有对该文章进行任何处理的话,直接存入到数据库中,那么下一次当其他用户访问该文章的时候,服务器会从数据库中读取后然后响应给客户端,那么浏览器就会执行这段脚本,然后攻击者就会获取到用户的cookie,然后会把cookie发送到攻击者的服务器上了。
如何防范?

  1. 后端需要对提交的数据进行过滤。
  2. 前端也可以做一下处理方式,比如对script标签,将特殊字符替换成HTML编码这些等。

二.使用apache 的common-text包中的StringEscapeUtils 工具对存入数据库的数据进行加解码

1.导入依赖

        <!--字符转义-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
            <version>1.8</version>
        </dependency>

2.使用方法
1)escapeHtml转义html脚本
2)unescapeHtml反转义html脚本

System.out.println(StringEscapeUtils.escapeHtml("<a>abc</a>"));
System.out.println(StringEscapeUtils.unescapeHtml("&lt;a&gt;abc&lt;/a&gt;"));

输出

&lt;a&gt;abc&lt;/a&gt;
<a>abc</a>

3.StringEscapeUtils 还可以进行字符串Unicode转义,xml转义
Unicode转义
1)escapeJava转义成Unicode编码
2)unescapeJava反转义成Unicode编码

System.out.println(StringEscapeUtils.escapeJava("你好"));
System.out.println(StringEscapeUtils.unescapeJava("\u4F60\u597D"));

输出

\u4F60\u597D
你好

xml转义
1)escapeXML转义XML
2)unescapeXML反转义XML

System.out.println(StringEscapeUtils.escapeXml("<name>贝贝</name>"));
System.out.println(StringEscapeUtils.unescapeXml("&lt;name&gt;&#36125;&#36125;&lt;/name&gt;"));

输出

&lt;name&gt;&#36125;&#36125;&lt;/name&gt;
<name>贝贝</name>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值