敏感词过滤器 filter

/*** 敏感词过滤器*/
public class SensitiveWordsFilter implements Filter {// 敏感词列表private String[] list;public static final String SENSITIVE_WORDS_ERROR_RETURN_JSON = "{\"isSuccess\":false,\"sensitiveWordsStatus\":1,\"msg\":\"您填写的信息涉及到敏感信息,请重新填写\"}";@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 敏感词名单,最好放入数据库,或者放入配置文件。String article = "敏感词1|敏感词2|敏感词3";list = article.split("\\|");}@Overridepublic void doFilter(final ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;String[] urls = {"/front/url1.do","/front/url2.do"};String servletPath = request.getServletPath();if (servletPath!=null){Set<String> set = new HashSet<>(Arrays.asList(urls));if(set.contains(servletPath)){try{Enumeration enu=request.getParameterNames();while(enu.hasMoreElements()){String paraName=(String)enu.nextElement();String parameter = request.getParameter(paraName);// 不在字段里的就跳出放过if (!isReplaceParam(paraName)) {continue;}boolean b = replaceString(parameter);if (!b){log.info("--------------->敏感词:"+paraName+": "+ parameter);response.setCharacterEncoding("UTF-8");response.getWriter().append(SENSITIVE_WORDS_ERROR_RETURN_JSON);return;}// linkman有加密数据,也有不加密数据if ("linkman".equals(paraName) || "responseText".equals(paraName)) {log.info("-----------------》paraName:"+paraName);log.info("-----------------》parameter:"+parameter);parameter = Sm2Utils.decrypt(parameter);log.info("-----------------》解密后:parameter:"+parameter);if (!replaceString(parameter)) {log.info("--------------->敏感词:"+paraName+": "+ parameter);response.setCharacterEncoding("UTF-8");response.getWriter().append(SENSITIVE_WORDS_ERROR_RETURN_JSON);return;}}}}catch (Exception e){log.error(e);}}}filterChain.doFilter(request, response);}/*** 将敏感词替换为空* @param str* @return*/public boolean replaceString(String str){for (String string : list) {if (str.contains(string)) {log.info("----------->敏感词:"+string);log.info("----------->输入词:"+str);return false;}}return true;}// 需要处理的字段名称public boolean isReplaceParam (String paramName) {String str = "ziduan1,ziduan2,ziduan3";return str.contains(paramName);}@Overridepublic void destroy() {}
}

敏感词过滤器 filter相关推荐

  1. JAVA -敏感词过滤器 工具类SensitiveFilter

    1.添加敏感词过滤工具类 类1: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStre ...

  2. 【前缀树】写一个敏感词过滤器

    1.什么是敏感词过滤 这其实是一个很常见的功能,随处可见以至于你可能都没关注过,基本上在有评论的地方都会有它的身影. 举例来说,你打游戏和别人对喷的时候,是不是一些脏话发不出去哈哈,这些词汇会用*** ...

  3. 用java写敏感词过滤器的代码

    用java写敏感词过滤器的代码 这里采用动态代理,所以要创建proxy代理对象,利用代理,来增强某些方法(getParameter方法.getParameterMap方法.getParameterVa ...

  4. 用js模拟一个简单敏感词过滤器

    1.用js模拟一个简单敏感词过滤器 (用户输入的内容中的敏感词替换为*) 例:"今天有个傻子在旁边大喊大叫,影响了我的操作.", 过滤后:"今天有个在旁边大喊大叫,影响了 ...

  5. python敏感词过滤代码简单代码,Python学习笔记系列——读写文件以及敏感词过滤器的实现...

    一.读文件 #打开文件,传入文件名和标识符,r代表读 f= open('\\Users\ZC\Desktop\zc.txt','r') #调用read方法一次性读取文件的全部内容,存入内存,用str对 ...

  6. 用前缀树实现中文敏感词过滤器

    文章目录 前言 运行环境 过滤器源码 过滤器测试类 前言 本文代码实现一个中文的敏感词过滤器,预先将准备好的敏感词写入前缀树数据结构中实现快速检索,并且节省内存.一般用于检查注册用户名称.言论是否包含 ...

  7. day10 敏感词过滤器

    1 重写定义一个request重写getparam方法 如果获取title和content属性就要重写过滤敏感词 2 建立一个过滤器filter 3 原理图

  8. java敏感词过滤器组件

    简介:用java写过滤器组件,需求:这里可以☆赌☆博☆,可以☆嫖☆娼☆,可以☆吸☆毒☆,可以☆开☆票☆,哈哈哈!经过过滤器过滤后变为这里可以☆*☆,可以☆***☆,可以☆***☆,可以☆*☆,哈哈哈! ...

  9. DFA算法实现的敏感词过滤器

    遇到一个过滤敏感词的需求,根据网上查询的资料整理了一下,代码如下 import java.io.BufferedReader; import java.io.File; import java.io. ...

最新文章

  1. oracle 之 EXP、IMP 使用简介
  2. kubernetes学习笔记之七: Ingress-nginx 部署使用
  3. [My B.S paper draft]我的本科答辩论文草稿
  4. html一个层下面两个小层并奇,我是一个奇数是一个两位数,十位数字与个位数字的积是2,猜猜看我是几?——青夏教育精英家教网——...
  5. Java黑皮书课后题第3章:**3.27(几何:点是否在三角形内)假设一个平面上有一个直角三角形。编写程序,提示用户输入一个点的x坐标和y坐标,然后判断这个点是否在该三角形内
  6. Java笔记(基础第二篇)
  7. 查询空缺_携程旅行2021校招开启,9大类职位,1000+岗位空缺,本科及以上学历...
  8. 批量下载,多文件压缩打包zip下载
  9. 从爬取的文章 HTML 中提取出中文关键字
  10. raspberry pi_如何启动新的Raspberry Pi
  11. 微服务升级_SpringCloud Alibaba工作笔记0004---认识spring gateway理解新一代网关
  12. HTML的定义和特点,【HTML】复习笔记(一)初识HTML
  13. 用MATLAB求定积分
  14. 台达伺服电机编码器改功率刷功率软件
  15. 有哪些让程序员受益终生的建议
  16. Python爬虫学习(八)----scrapy框架
  17. Vue el-menu-item路由跳转
  18. 机器学习——信用卡反欺诈案例
  19. 华为OD机试 - 英文输入法单词联想(Python) | 机试题+算法思路+考点+代码解析 【2023】
  20. net-java-php-python-伊犁旅游网站计算机毕业设计程序

热门文章

  1. 豪门赘婿!扮猪吃虎!面试10多家软件测试工程师经验分享!
  2. 关于全栈工程师的一点想法
  3. 无纸化办公,是绿色办公新体验
  4. 漂亮的仿大婶娱乐网模板 娱乐资源网整站源码 laysns内核
  5. 计算机工作表编辑,Excel工作表编辑与管理
  6. Codeforces Round#539(Div. 2)
  7. 坐标系旋转与向量旋转(旋转矩阵)
  8. 多重背包java版本实现_楼天城男人八题——POJ1742 Coins
  9. 编译原理学习笔记04——(孙悟空学72变之菩提老祖的阴谋—可怕的左递归)——2014_1_18
  10. Word文档转PDF的功能