OWASP HTML Sanitizer 是一个简单快捷的java类库,主要用于放置XSS

优点如下:

  1.使用简单。不需要繁琐的xml配置,只用在代码中少量的编码

  2.由Mike Samuel(谷歌工程师)维护

  3.通过了AntiSamy超过95%的UT覆盖

  4.高性能,低内存消耗

  5.是 AntiSamy DOM性能的4倍

1.POM中增加

        <!--html标签过滤-->
<dependency>
<groupId>com.googlecode.owasp-java-html-sanitizer</groupId>
<artifactId>owasp-java-html-sanitizer</artifactId>
<version>r136</version>
</dependency>

2.工具类

import org.owasp.html.ElementPolicy;
import org.owasp.html.HtmlPolicyBuilder;
import org.owasp.html.PolicyFactory; import java.util.List; /**
* @author : RandySun
* @date : 2018-10-08 10:32
* Comment :
*/
public class HtmlUtils { //允许的标签
private static final String[] allowedTags = {"h1", "h2", "h3", "h4", "h5", "h6",
"span", "strong",
"img", "video", "source",
"blockquote", "p", "div",
"ul", "ol", "li",
"table", "thead", "caption", "tbody", "tr", "th", "td", "br",
"a"
}; //需要转化的标签
private static final String[] needTransformTags = {"article", "aside", "command","datalist","details","figcaption", "figure",
"footer","header", "hgroup","section","summary"}; //带有超链接的标签
private static final String[] linkTags = {"img","video","source","a"};
public static String sanitizeHtml(String htmlContent){
PolicyFactory policy = new HtmlPolicyBuilder()
//所有允许的标签
.allowElements(allowedTags)
//内容标签转化为div
.allowElements( new ElementPolicy() {
@Override
public String apply(String elementName, List<String> attributes){
return "div";
}
},needTransformTags)
.allowAttributes("src","href","target").onElements(linkTags)
//校验链接中的是否为http
.allowUrlProtocols("https")
.toFactory();
String safeHTML = policy.sanitize(htmlContent);
return safeHTML;
} public static void main(String[] args){
String inputHtml = "<img src=\"https://a.jpb\"/>";
System.out.println(sanitizeHtml(inputHtml));
}
}

 其中.allowElements(allowedTags)是添加所有允许的html标签,

以下是需要转化的标签,把needTransformTags中的内容全部转化为div
//内容标签转化为div
.allowElements( new ElementPolicy() {
@Override
public String apply(String elementName, List<String> attributes){
return "div";
}
},needTransformTags)
.allowAttributes("src","href","target").onElements(linkTags)是在特定的标签上允许的属性
.allowUrlProtocols("https")表示href或者src链接中只允许https协议

最新文章

  1. Mysql字符转义
  2. Python 小爬虫流程总结
  3. mac 解决eclipse OutOfMemoryError
  4. Yii源码阅读笔记(一)
  5. 解决uploadify多图片上传部分图片丢失,且不提示任何错误的问题
  6. Java List详解
  7. bit、sbin、sfr、sfr16 区别分析
  8. 用CSS/CSS3 实现 水平居中和垂直居中的完整攻略
  9. List是线程安全的吗?如果不是该怎么办呢?安全的List对性能的影响有多大呢?
  10. netflix zuul 学习
  11. 理解javascript中的回调函数(callback)
  12. 【NOIP2015提高组】 Day1 T3 斗地主
  13. 关于IsDeleted,Islock,State类型Bit,char(1),tinyint的探讨
  14. docker 配置 http 访问
  15. 提纲挈领webrtc音频处理算法之写在前面的话
  16. Oracle 11g中修改被锁定的用户:scott
  17. javascript模块化编程-详解立即执行函数表达式IIFE
  18. JVM老年代和新生代的比例
  19. Jenkins+sonar7.3集成
  20. 阿里云ECS服务器源配置

热门文章

  1. 搭建jdk环境
  2. VS2013漂亮字体
  3. 使用 OLEDB 及 SqlBulkCopy 将多个不在同一文件夹下的 ACCESS mdb 数据文件导入MSSQL
  4. varchar(n)跟varchar(max)的区别
  5. Spring FactoryBean用法
  6. js画一棵树
  7. 0 test classes found in package in XXXX
  8. js中windows的函数(随机数,计时器的实现)
  9. BZOJ4671:异或图
  10. 鼠标事件-拖拽2(不能拖出指定对象的div)