From b4b0d624a6e9c8a4955062c92287540e617dbbed Mon Sep 17 00:00:00 2001 From: JaguarJack Date: Thu, 18 Jun 2020 16:29:26 +0800 Subject: [PATCH] fixed dfa bug --- .../system/request/sensitiveWord/CreateRequest.php | 0 catch/system/request/sensitiveWord/UpdateRequest.php | 1 + extend/catcher/library/Trie.php | 8 ++++++++ 3 files changed, 9 insertions(+) rename extend/catcher/command/TestCommand.php => catch/system/request/sensitiveWord/CreateRequest.php (100%) create mode 100644 catch/system/request/sensitiveWord/UpdateRequest.php diff --git a/extend/catcher/command/TestCommand.php b/catch/system/request/sensitiveWord/CreateRequest.php similarity index 100% rename from extend/catcher/command/TestCommand.php rename to catch/system/request/sensitiveWord/CreateRequest.php diff --git a/catch/system/request/sensitiveWord/UpdateRequest.php b/catch/system/request/sensitiveWord/UpdateRequest.php new file mode 100644 index 0000000..b3d9bbc --- /dev/null +++ b/catch/system/request/sensitiveWord/UpdateRequest.php @@ -0,0 +1 @@ +sensitiveWord = $words[$start]; + // 从敏感词开始查找内容中是否又符合的 for ($i = $start+1; $i< $len; $i++) { $node = $node[$words[$i]] ?? null; $this->sensitiveWord .= $words[$i]; @@ -103,6 +104,13 @@ class Trie break; } } + // 防止内容比敏感词短 导致验证过去 + // 使用敏感词【傻子】校验【傻】这个词 + // 会提取【傻】 + // 再次判断是否是尾部 + if (!isset($node['end'])) { + $this->sensitiveWord = ''; + } } return $all ? $this->sensitiveWords : $this->sensitiveWord;