springboot 敏感词过滤
时间: 2023-10-12 13:59:23 浏览: 151
在Springboot中进行敏感词过滤的主要步骤如下:
首先,我们可以在过滤器中引用工具类,并对传入的参数值进行过滤。可以新建一个SensitiveWordsFilter,通过使用request.getParameterNames()方法获取到前端参数名的枚举,然后遍历处理数据。具体代码如下:
```
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
//获取前端传递的所有参数名的枚举
Enumeration pNames = request.getParameterNames();
//遍历枚举
while(pNames.hasMoreElements()){
//获取参数名
String name=(String)pNames.nextElement();
//获取参数值
String value =request.getParameter(name);
//对参数值进行敏感词处理,并重新设置到request
String str = SensitiveWordUtil.sensitiveHelper(value);
request.setAttribute(name,str);
}
//放行
filterChain.doFilter(servletRequest,servletResponse);
}
```
另外,在Controller方法中,我们可以直接使用一些手段对提交的数据进行处理。主要入口在SensitiveWordUtils.apply(o)这里的 "Object" 参数。通常情况下,我们可以在这里进行处理。具体代码可以根据实际需求进行编写。
最后,如果需要对对象的某些属性进行敏感词过滤,可以自行实现缓存对象的String类型的Field或者methodName,并在第一次加载的时候将其缓存。可以使用ConcurrentHashMap来缓存ObjectType和对应的List<StringField>,这样可以过滤出String类型的Field,其他类型的Field可以酌情考虑。这样可以对对象的敏感词进行过滤和处理。
希望以上信息对您有所帮助。<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* [spring boot 实现敏感词过滤](https://blog.csdn.net/shiwq1231/article/details/89234686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
- *2* *3* [Spring Boot 下,敏感词及特殊字符过滤处理方式](https://blog.csdn.net/chuhui1765/article/details/100670484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
阅读全文