JavaWeb - 【Filter】敏感詞過濾
Filter - 敏感詞過濾
- 過濾器細節
- 執行流程
- 生命週期(
專案部署
) - 攔截路徑
- 攔截方式
- 從檔案中獲取敏感詞清單
- 將所有敏感詞替換為***
- 動態代理(
設計模式
)
- 動態代理(
一:過濾器細節
二:從檔案中獲取敏感詞清單
List<String> sensitiveWordsList = new ArrayList<>();
@Override
public void init(FilterConfig filterConfig){
// 1. 獲取敏感詞清單,讀取進入List
try {
String sensitiveFilePath = "/WEB-INF/classes/sensitiveWords.txt";
ServletContext servletContext = filterConfig.getServletContext();
String realPath = servletContext.getRealPath(sensitiveFilePath);
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(realPath),
StandardCharsets.UTF_8));
// 1.1 如何從BufferedReader中迴圈讀取每一行
String line = null;
while ((line = br.readLine())!=null) {
sensitiveWordsList.add(line);
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
}
三:將所有敏感詞替換為***
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// FORWARD請求轉發的的request是:org.apache.catalina.core.ApplicationHttpRequest
// 使用動態代理強轉ServletQuest時報錯
// Tomcat9.0.38
System.out.println(servletRequest);
// 1. 增強request的getParameter方法
ServletRequest proxyReq = (ServletRequest) Proxy.newProxyInstance(servletRequest.getClass().getClassLoader(), servletRequest.getClass().getInterfaces(), (proxy, method, args) -> {
if ("getParameter".equals(method.getName())) {
String res = (String) method.invoke(servletRequest, args);
if (res != null) {
for (String s :
sensitiveWordsList) {
if (res.contains(s)) {
res = res.replaceAll(s, "***");
}
}
}
return res;
}
return method.invoke(servletRequest, args);
});
// 2. 使用代理物件放行
filterChain.doFilter(proxyReq,servletResponse);
}
相關文章
- Java敏感詞過濾Java
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- JavaScript評論敏感詞過濾程式碼JavaScript
- 教你如何實現Python 過濾敏感詞Python
- js實現敏感詞過濾演算法JS演算法
- JAVA使用DFA演算法過濾敏感詞Java演算法
- springboot專案結合filter,jdk代理實現敏感詞過濾(簡單版)Spring BootFilterJDK
- 高效的關鍵詞替換和敏感詞過濾工具
- Safari網頁敏感文字過濾外掛:Profanity Filter for Mac網頁FilterMac
- 過濾器應用【編碼、敏感詞、壓縮、轉義過濾器】過濾器
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- DFA演算法之內容敏感詞過濾演算法
- filter過濾Filter
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- DFA在C#中的實現:過濾敏感詞C#
- Filter過濾器Filter過濾器
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- PHP 過濾器(Filter)PHP過濾器Filter
- Java Filter過濾器JavaFilter過濾器
- lucene Filter過濾器Filter過濾器
- Elasticsearch——filter過濾查詢ElasticsearchFilter
- Filter過濾器的使用Filter過濾器
- 【面試被虐】說說遊戲中的敏感詞過濾是如何實現的?面試遊戲
- 布隆過濾器(Bloom Filter)過濾器OOMFilter
- Laravel 模型過濾(Filter)設計Laravel模型Filter
- 布隆過濾器 Bloom Filter過濾器OOMFilter
- Bloom Filter 布隆過濾器OOMFilter過濾器
- servlet的過濾器filter類Servlet過濾器Filter
- OGG -FILTER 引數過濾Filter
- Filter不過濾CSS和JSFilterCSSJS
- angular內建過濾器-filterAngular過濾器Filter
- OGG 行過濾filter 引數Filter
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- Vue定義全域性過濾器filterVue過濾器Filter
- HBase Filter 過濾器之 ValueFilter 詳解Filter過濾器
- 布隆過濾器(Bloom Filter)詳解過濾器OOMFilter
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- 攔截器(Interceptor)與過濾器(Filter)過濾器Filter