Kaynağa Gözat

新增敏感词返回报错

fangzhen 4 ay önce
ebeveyn
işleme
597a4d1118

+ 7 - 5
ruoyi-admin/src/main/resources/i18n/messages.properties

@@ -13,6 +13,8 @@ role.blocked=角色已封禁,请联系管理员
 login.blocked=很遗憾,访问IP已被列入系统黑名单
 user.logout.success=退出成功
 project.error=程序异常
+article.title.error=文章标题包含敏感文字,请检查!
+article.content.error=文章内容包含敏感文字,请检查!
 
 length.not.valid=长度必须在{min}到{max}个字符之间
 
@@ -40,8 +42,8 @@ no.export.permission=您没有导出数据的权限,请联系管理员添加
 no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]
 
 ##配置OOS信息
-uoload.oos.endPoint=oss-cn-shanghai.aliyuncs.com
-uoload.oos.accessKeyId=LTAI5tS4n2s89tQLDxjb2jfE
-uoload.oos.accessKeySecret=OdSKx43VHz0MwWnCjAzzOwF9ze8VDR
-uoload.oos.accessPre=https://cysd.oss-cn-shanghai.aliyuncs.com/
-uoload.oos.bucketName=cysd
+upload.oos.endPoint=oss-cn-shanghai.aliyuncs.com
+upload.oos.accessKeyId=LTAI5tS4n2s89tQLDxjb2jfE
+upload.oos.accessKeySecret=OdSKx43VHz0MwWnCjAzzOwF9ze8VDR
+upload.oos.accessPre=https://cysd.oss-cn-shanghai.aliyuncs.com/
+upload.oos.bucketName=cysd

+ 150 - 0
ruoyi-admin/src/main/resources/word.txt

@@ -0,0 +1,150 @@
+尼玛
+装逼
+草泥马
+特么的
+撕通
+玛拉戈壁
+爆菊
+JB
+呆
+本屌
+齐B短裙
+法克鱿
+丢你老母
+达菲鸡
+装13
+通格
+蛋疼
+绿茶婊
+你妈的
+表砸
+屌爆了
+买了个婊
+已撸
+古跋猫
+妈蛋
+逗比
+我靠
+碧莲
+碧池
+然并卵
+日了狗
+屁民
+吃翔
+XX狗
+淫家
+你妹
+浮尸国
+滚粗
+性生活
+性交
+生殖器
+曹尼玛
+草你妈
+草拟吗
+草泥马
+日你妈
+日你妹
+狗日的
+畜生
+王八蛋
+吊毛
+母畜
+牲口
+雌堕
+雌竞
+恐怖组织
+校园
+学校
+枪
+微信
+QQ
+企鹅
+私聊
+线下
+wx
+WX
+qq
+孤儿
+杀人
+杀人犯
+奴隶
+黑奴
+白鬼
+奴才
+Dom
+DOM
+sub
+SM
+sm
+斯慕
+私募
+思慕
+皮鞭
+踩踏
+ATM
+转账
+红包
+赠送
+无偿
+凌辱
+拐卖
+酒
+未成年
+wcn
+小孩
+胸部
+乳头
+私密
+龟头
+肉棒
+二弟
+小弟弟
+子宫
+精液
+内射
+拐卖
+cnm
+grd
+杀了你
+孤儿
+政府
+改革
+我日
+上我
+操你妈
+操你妈了个逼
+夜总会
+情色
+死全家
+处女
+鸡鸡
+下体
+奶子
+乳头
+贱人
+傻逼
+脑残
+智障
+弱智
+傻卵
+约炮
+抽插
+射精
+肛门
+骚
+屌
+纳粹
+鸡巴
+婊子
+妓女
+自残
+割腕
+侵犯
+waf
+n射
+贱妓
+政治犯
+金融
+部队
+军人

+ 62 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/SensitiveWordUtil.java

@@ -0,0 +1,62 @@
+package com.ruoyi.common.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.CollectionUtils;
+
+import java.io.*;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+@Slf4j
+public class SensitiveWordUtil {
+    //敏感词库 通过jvm缓存
+    private static final Set<String> sensitiveWords = new HashSet<>();
+
+    static {
+        //静态代码块加载敏感词库
+        load();
+    }
+
+    /**
+     * 从敏感文件中逐行读取,加载到敏感词 set中
+     */
+    public static void load() {
+        if (CollectionUtils.isEmpty(sensitiveWords)) {
+            InputStream in = SensitiveWordUtil.class.getResourceAsStream("/word.txt");
+            try (BufferedReader reader = new BufferedReader(new InputStreamReader(in));) {
+                String line;
+                //逐行读取文件
+                while ((line = reader.readLine()) != null) {
+                    sensitiveWords.add(line);
+                }
+            } catch (FileNotFoundException e) {
+                log.error("读取敏感词库文件错误,文件不存在");
+                throw new RuntimeException("读取敏感词库文件错误,文件不存在");
+            } catch (IOException e) {
+                log.error("读取敏感词库文件错误,io问题");
+                throw new RuntimeException("读取敏感词库文件错误,io问题");
+            }
+        }
+    }
+
+
+    /**
+     * 判断传入文本中是否包含敏感词
+     *
+     * @param word 内容
+     * @return 是否包含敏感词
+     */
+    public static boolean containsSensitiveWord(String word) {
+        Iterator<String> iterator = sensitiveWords.iterator();
+        boolean result = false;
+        while (iterator.hasNext()) {
+            String sensitiveWord = iterator.next();
+            if (word.contains(sensitiveWord)) {
+                result = true;
+                log.error("匹配到敏感词" + sensitiveWord);
+            }
+        }
+        return result;
+    }
+}

+ 11 - 3
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/CommunityArticleController.java

@@ -10,9 +10,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.exception.user.ProjectException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.*;
 import com.ruoyi.generator.domain.Community.*;
 import com.ruoyi.generator.mapper.community.*;
 import com.ruoyi.generator.service.*;
@@ -136,6 +134,16 @@ public class CommunityArticleController extends BaseController {
             if (communityArticle.getClassIds().isEmpty()) {
                 return AjaxResult.error("板块不能为空");
             }
+            String title = communityArticle.getTitle();
+            String content = communityArticle.getContent();
+            boolean isSensitiveTitle = SensitiveWordUtil.containsSensitiveWord(title);
+            if (isSensitiveTitle) {
+                return AjaxResult.error(MessageUtils.message("article.title.error"));
+            }
+            boolean isSensitiveContent = SensitiveWordUtil.containsSensitiveWord(content);
+            if (isSensitiveContent) {
+                return AjaxResult.error(MessageUtils.message("article.content.error"));
+            }
             communityArticleService.insertCommunityArticle(communityArticle);
         } catch (Exception e) {
             System.out.println(e.getMessage());