敏感词过滤可以分为前端和后端两部分:

  1. 前端过滤:在Vue中可以使用正则表达式或者第三方库进行敏感词过滤,例如使用插件vue-bad-words。

  2. 后端过滤:在SpringBoot中可以使用过滤器进行敏感词过滤,具体实现步骤如下:

(1)新建一个过滤器类SensitiveFilter,实现javax.servlet.Filter接口。

(2)在doFilter方法中获取请求参数,通过遍历敏感词库,使用正则表达式或者KMP算法进行匹配,如果匹配到敏感词则替换成*或者抛出异常。

(3)在WebConfig中注册SensitiveFilter。

具体实现代码如下:

SensitiveFilter.java

package com.example.filter;

import org.springframework.stereotype.Component;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Component
@WebFilter(urlPatterns = {"/*"})
public class SensitiveFilter implements Filter {

    private List<String> words = new ArrayList<>();

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        words.add("敏感词1");
        words.add("敏感词2");
        words.add("敏感词3");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        String content = req.getParameter("content");
        for (String word : words) {
            if (content.contains(word)) {
                content = content.replaceAll(word, "**");
            }
        }
        req.setAttribute("content", content);
        chain.doFilter(req, response);
    }

    @Override
    public void destroy() {

    }
}

WebConfig.java

package com.example.config;

import com.example.filter.SensitiveFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public FilterRegistrationBean<SensitiveFilter> sensitiveFilter() {
        FilterRegistrationBean<SensitiveFilter> registrationBean = new FilterRegistrationBean<>();
        registrationBean.setFilter(new SensitiveFilter());
        registrationBean.addUrlPatterns("/*");
        registrationBean.setName("SensitiveFilter");
        registrationBean.setOrder(1);
        return registrationBean;
    }
}

在以上代码中,敏感词库以List的形式存储在SensitiveFilter中,在doFilter方法中遍历敏感词库,使用String的replaceAll方法将敏感词替换为**,并将替换后的内容放入request中,最后通过FilterChain的doFilter方法传递给下一个过滤器或Servlet。在WebConfig中通过@Bean注解注册SensitiveFilter,并设置过滤器执行顺序和过滤的URL路径


原文地址: https://www.cveoy.top/t/topic/e3k2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录