Java过滤HTML标签工具类
过滤HTML标签能有效的放置XSS攻击。
封装:
import org.slf4j.Logger; import org.slf4j.LoggerFactory;import org.springframework.util.StringUtils;import java.util.regex.Matcher; import java.util.regex.Pattern;/*** HTML标签过滤工具** @author jim* @date 2017/11/27*/ public final class HtmlUtils {private static final Logger logger = LoggerFactory.getLogger(HtmlUtils.class);/*** 禁止实例化*/private HtmlUtils() {throw new IllegalStateException("禁止实例化");}/*** 过滤HTML标签输出文本** @param inputString 原字符串* @return 过滤后字符串*/public static String Html2Text(String inputString) {if (StringUtils.isEmpty(inputString)) {return "";}// 含html标签的字符串String htmlStr = inputString.trim();String textStr = "";Pattern p_script;Matcher m_script;Pattern p_style;Matcher m_style;Pattern p_html;Matcher m_html;Pattern p_space;Matcher m_space;Pattern p_escape;Matcher m_escape;try {// 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>";// 定义style的正则表达式{或<style[^>]*?>[\\s\\S]*?<\\/style>String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>";// 定义HTML标签的正则表达式String regEx_html = "<[^>]+>";// 定义空格回车换行符String regEx_space = "\\s*|\t|\r|\n";// 定义转义字符String regEx_escape = "&.{2,6}?;";// 过滤script标签p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);m_script = p_script.matcher(htmlStr);htmlStr = m_script.replaceAll("");// 过滤style标签p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);m_style = p_style.matcher(htmlStr);htmlStr = m_style.replaceAll("");// 过滤html标签p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);m_html = p_html.matcher(htmlStr);htmlStr = m_html.replaceAll("");// 过滤空格回车标签p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);m_space = p_space.matcher(htmlStr);htmlStr = m_space.replaceAll("");// 过滤转义字符p_escape = Pattern.compile(regEx_escape, Pattern.CASE_INSENSITIVE);m_escape = p_escape.matcher(htmlStr);htmlStr = m_escape.replaceAll("");textStr = htmlStr;} catch (Exception e) {logger.info("Html2Text:{}", e.getMessage());}// 返回文本字符串return textStr;} }
简单点的方式:
/*** 删除所有的HTML标签** @param source 需要进行除HTML的文本* @return*/ public static String deleteAllHTMLTag(String source) {if(source == null) {return "";}String s = source;/** 删除普通标签 */s = s.replaceAll("<(S*?)[^>]*>.*?|<.*? />", "");/** 删除转义字符 */s = s.replaceAll("&.{2,6}?;", "");return s; }
其它:
Spring HtmlUtils可以实现HTML与转义字符之间的转换,但不能过滤HTML标签。
参考:
http://blog.csdn.net/hj7jay/article/details/51072327
https://www.cnblogs.com/shz365/p/5127271.html
http://hw1287789687.iteye.com/blog/2235927
http://blog.csdn.net/PKWind/article/details/49756429
http://blog.csdn.net/breaker892902/article/details/38556309
Java过滤HTML标签工具类相关推荐
- java去掉html中的图片,java去掉html标签工具
java去掉html标签工具 [2021-01-31 16:18:56] 简介: php去掉所有标签的方法:1.使用"strip_tags"方法去掉HTML及PHP的标记:2.通 ...
- java项目常用的工具类
前言 在开发过程中,我们会遇到很多繁琐或者棘手的问题,但是,这些问题往往会存在一些便捷的工具类,来简化我们的开发,下面是我工作中经常使用到的工具类 常用工具类 日期工具类 import java.te ...
- java图片缩放工具类,一个JAVA图形缩放处置工具类
一个JAVA图形缩放处理工具类 调用的例子 import java.io.FileOutputStream; import java.io.IOException; import javax.imag ...
- JAVA I/O流工具类TextFile
JAVA I/O流工具类TextFile由广州疯狂软件java培训分享: 本文是一个TextFile类,通过这个类我们可以调用其中的方法来简化对文件的读写,这段代码的可用性比较强.这个TextFile ...
- java redis remove_最全的Java操作Redis的工具类
RedisUtil 当前版本:1.1 增加更全的方法,对以前的部分方法进行了规范命名,请放心替换成新版本. 介绍 最全的Java操作Redis的工具类,使用StringRedisTemplate实现, ...
- java过滤html标签获取纯文本信息
转载自 java过滤html标签获取纯文本信息 package com.lyt.base.util;import java.util.regex.Pattern;public class Filter ...
- java图形验证码生成工具类
转载自 java图形验证码生成工具类 生成验证码效果 ValidateCode.java 验证码生成类 package cn.dsna.util.images; import java ...
- java 代理ip工具类_Java基础之java处理ip的工具类
java处理ip的工具类,包括把long类型的Ip转为一般Ip类型.把xx.xx.xx.xx类型的转为long类型.根据掩码位获取掩码.根据 ip/掩码位 计算IP段的起始IP.根据 ip/掩码位 计 ...
- java练习(数组工具类的封装)[目前写过最长的代码,虽然不难]
java练习(数组工具类的封装)[目前写过最长的代码,虽然不难] package myUtil.arrayUtil;public class ArraysUtil {/*** 升序排列一个byte数组 ...
最新文章
- 【 FPGA 】寄存器输出的不稳定态
- psycopg2 mysql_使用psycopg2操作PostgreSQL数据库之二
- Java 8:从PermGen到元空间
- SQL SERVER7应用
- oracle back log,11g闪回日志(flashback log)保留时间参数 - db_flashback_retention_target
- python中and和or的惰性求值特点_Python中的惰性评估
- 主线程等待一个 无阻塞函数 死循环子线程的安全退出
- 数据库索引优化原理,索引的工作机制
- 学习笔记:杨辉三角形上莫队(组合数莫队)(LULU胡策)
- 华为回应“WIFI联盟撤销会员资格”:不会受个别组织影响
- CKEditor 富文本编辑器转PDF
- 网络安全实验室 综合关 解析
- HenCoder UI 部分 2-1 布局基础
- 网站克隆工具_Kali Linux工具篇十三:网站克隆技巧Httrack使用技巧
- 上海计算机科学大学排名,2019上海软科世界一流学科排名计算机科学与工程专业排名卡耐基梅隆大学排名第4...
- 一文看不懂方差和标准差
- Linux环境创建oracle数据库
- 名企笔试:腾讯2016招聘笔试(微信红包)
- Library\PackageCache\com.unity Error (are you missing a using directive or an assembly reference?)
- iphone11官网HTML,苹果小白入手iPhone11,以下几个基础操作要知道
热门文章
- Python dataframe绘制饼图_【python可视化】:matplotlib:常见图表绘制——面积图、填图、饼图...
- go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具
- cocos2d-x 输出debug信息
- 29.CSS3边框图片效果
- c++删除容器中的奇数
- curl命令的超时时间
- [转]Supporting OData Query Options in ASP.NET Web API 2
- java entry
- 【原创】modb 功能设计之“跨线程通信”
- jmeter随机参数化不重复_接口测试参数化详解(Jmeter)