富文本提交数据到后台防止xss攻击

StringEscapeUtils.unescapeHtml的使用
富文本提交数据到后台后,保存到数据库的格式可能是这样的:
<p>打发 发顺丰</p>
我们有时候需要的是:

<p>打发 发顺丰</p>

    public static void main(String[] args) {

//方式一
        //org.apache.commons.lang3.StringEscapeUtils会把中文也转义
        String str = StringEscapeUtils.unescapeHtml4("&lt;p&gt;打发 发顺丰&lt;/p&gt;");
        //获取数据库数据,相当于解码反转译
        System.out.println(str);
        String str2 = StringEscapeUtils.escapeHtml4("<p>打发 发顺丰</p>");
        //获取富文本编辑器数据,相当于过滤转译,防止跨站xss攻击
        System.out.println(str2);

//方式二
       //spring的org.springframework.web.util.HtmlUtils.htmlEscape 不会转义中文
        System.out.println( HtmlUtils.htmlEscape("<font>打发 发顺丰 xing</font>"));

输出结果:

转义HTML,注意汉字:&lt;font&gt;chen&#25171;&#21457; &#21457;&#39034;&#20016;  xing&lt;/font&gt;
反转义HTML:<font>chen打发 发顺丰   xing</font>
&lt;font&gt;chen打发 发顺丰   xing&lt;/font&gt;

}

StringEscapeUtils.escapeHtml的具体使用
 跨站脚本XSS又叫CSS (Cross Site Script)。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的,例如:获取受害者的会话标识以冒充受害者访问系统(具有受害者的权限),还能够轻松地强迫用户的浏览器发出非故意的HTTP请求,如诈骗性的电汇请求、修改口令和下载非法的内容等请求。
 对于不可信的输入可以采用 apache.commons.lang3.StringEscapeUtils 对输入字符串进行过滤,将’<’ ‘>’ ‘*’ 三个字符转换成html编码格式 < & &gt. 防止HTML注入攻击

import org.apache.commons.lang3.StringEscapeUtils;
 
public class XSStest{
    public static void main(String[] args) {
        String s = "<alert>(123)(*&^%$#@!)</alert>";
        s = StringEscapeUtils.escapeHtml4(s);
        System.out.println(s);
    }
}
 <alert>(123)(*&^%$#@!)</alert>
可以有效的防止恶意的页面跳转,alert弹框。


版权声明:本文为qq_34316431原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。