org.springframework.web.util.HtmlUtils,特殊字符转义工具类

     很多时候,由于特殊字符的原因,会造成用户输入的信息反馈到页面上时会显示成乱码,造成页面排版混乱;另外,黑客经常利用特殊字符对网站进行xss跨站攻击,所以我们需要对页面上提交的特殊字符进行html转码。

spring提供了一个工具类,org.springframework.web.util.HtmlUtils,省去了我们写工具类对html中的特殊字符进行过滤的麻烦。以下是对该工具类的使用示例:

import org.springframework.web.util.HtmlUtils;
public class HtmpEscapeExample {
    public static void main(String[] args) {
        String specialStr = " #测试转义:#<table id=\"testid\"><tr>test1;test2</tr></table>";
     // ①转换为HTML转义字符表示
        String str1 = HtmlUtils.htmlEscape(specialStr);
        System.out.println(str1);
      
     // ②转换为数据转义表示
        String str2 = HtmlUtils.htmlEscapeDecimal(specialStr);
        System.out.println(str2);
      
      //③转换为十六进制数据转义表示
        String str3 = HtmlUtils.htmlEscapeHex(specialStr); 
        System.out.println(str3);
      
       // ④下面对转义后字符串进行反向操作
        System.out.println(HtmlUtils.htmlUnescape(str1));
        System.out.println(HtmlUtils.htmlUnescape(str2));
        System.out.println(HtmlUtils.htmlUnescape(str3));
    }
} 

             另外,如果直接是用户输入的地方,可以直接过滤,但如果管理员用编辑器来编辑,就会有本来对应格式的HTML呗,这样的话,一般就过滤一些特殊标签,比如<script>,肯定是不能用的。还有就是一些触发事件选项,比如<img src="" onerror=""> 中的onerror就要过滤掉,不能在img标签中出现,单独的<img src="">这样可以;一般大型公司对链接里的触发事件会做一些过滤,比如一般你输入<a href="" onmouseover="">,就只剩下<a href="">。

猜你喜欢

转载自libaxiaoyuan.iteye.com/blog/2198633
今日推荐