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);
}
相關文章
- JavaWeb 中 Filter過濾器JavaWebFilter過濾器
- springboot專案結合filter,jdk代理實現敏感詞過濾(簡單版)Spring BootFilterJDK
- JavaScript評論敏感詞過濾程式碼JavaScript
- 教你如何實現Python 過濾敏感詞Python
- Safari網頁敏感文字過濾外掛:Profanity Filter for Mac網頁FilterMac
- js實現敏感詞過濾演算法JS演算法
- JAVA使用DFA演算法過濾敏感詞Java演算法
- 高效的關鍵詞替換和敏感詞過濾工具
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- DFA演算法之內容敏感詞過濾演算法
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- filter過濾Filter
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- DFA在C#中的實現:過濾敏感詞C#
- Filter過濾器Filter過濾器
- PHP 過濾器(Filter)PHP過濾器Filter
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- Elasticsearch——filter過濾查詢ElasticsearchFilter
- Filter過濾器的使用Filter過濾器
- python輕鬆過濾處理髒話與特殊敏感詞彙的方法Python
- 布隆過濾器(Bloom Filter)過濾器OOMFilter
- Laravel 模型過濾(Filter)設計Laravel模型Filter
- 布隆過濾器 Bloom Filter過濾器OOMFilter
- Bloom Filter 布隆過濾器OOMFilter過濾器
- 非法詞彙過濾
- 【面試被虐】說說遊戲中的敏感詞過濾是如何實現的?面試遊戲
- PbootCMS設定當前站點模板,模板子目錄,黑白名單,敏感詞過濾等boot
- 布隆過濾器(Bloom Filter)詳解過濾器OOMFilter
- Filter-Policy過濾策略&Route-policyFilter
- HBase Filter 過濾器之 ValueFilter 詳解Filter過濾器
- 如何在vue中使用過濾器filterVue過濾器Filter
- Vue定義全域性過濾器filterVue過濾器Filter
- filter在JavaScript中過濾陣列元素FilterJavaScript陣列
- 攔截器(Interceptor)與過濾器(Filter)過濾器Filter
- java8 多條件的filter過濾JavaFilter
- 【JavaWeb】EL表示式&過濾器&監聽器JavaWeb過濾器
- CSS濾鏡(filter)CSSFilter
- SVG <filter> 濾鏡SVGFilter