小区门口有一间安检岗亭,保安小李手里有一本翻得卷了边的“重点人员名单”,上面记着惯偷的名字和特征。名单不是一天建成的——每抓到新面孔就补一笔,每条记录都标了危险等级。可小偷会换装:改名字、换发型、把特征拆散。小李学会了不看名字看规律:凌晨活动、黑帽衫、双肩包。人多了又查不过来,岗亭装了联动闸机,多套特征同时比对,一次扫码全量核验。后来小偷把“DELETE“写成”DeLeTe“,小李就在入口处加了一道”体貌归一化”预处理。再后来,他设了分级:高危直接拦、可疑先盘问,白名单上的老住户直接放行。通告栏每周更新,新骗术第二天就印成传单。 这套岗亭系统,就是 AI 应用上线前的输入侧关键词与正则黑名单过滤:名单是黑名单词库,规律画像是正则表达式,闸机是多模式匹配算法,换装是绕过对抗,误抓是误报治理,通告栏是动态规则管理。理解了这套系统,你就理解了提示词安全的第一道防线。

岗位关联

对 AI 从业者而言,这是从“能用模型”走向“安全交付模型”的必修课。掌握输入侧过滤,你就能在推理成本不变的前提下挡住大部分已知恶意输入——它是大模型应用落地时性价比最高的安全投资。

目录
  1. 可视化演示
  2. 黑名单词库构建
  3. 正则表达式设计
  4. 高效多模式匹配
  5. 绕过对抗策略
  6. 误报治理机制
  7. 动态规则管理
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

黑名单词库构建

小李上岗第一天,队长递来一本厚厚的名单。每一页都来自真实事件:上个月的失窃总结、隔壁小区传来的通报、社区民警发的协查情报。小李抓住新面孔,也会补上一笔。名单不是拍脑袋写的,每条都有来源、有等级、有有效期——这就是黑名单词库构建。

在提示词安全里,黑名单词库是过滤器最重要的弹药库。它不能凭空产生,主要来源有四类:历史拦截日志中提取的真实攻击载荷;公开的渗透测试与攻击样本库;安全社区与威胁情报平台的通报;以及业务方在运营中反馈的违规案例。每条词条除了文本本身,还携带元数据:威胁等级、适用场景、有效期和来源。

为了让名单可治理,词条必须分级。高危词直接阻断,比如典型的破坏性 SQL 指令;中危词进入人工审核队列;低危词只记录日志。同时要覆盖多语言:英文、简繁中文、日文假名、阿拉伯字母,避免跨国用户用母语绕过。词库还要做版本管理,每次增删都视为一次“规则发布”,支持回滚。

小李的名单越攒越厚,但每一条都有据可查。真正的生产级词库也是这样:没有来源的词条是噪音,有来源、分级清晰的词条才是弹药。

危险度(w)=α×词源权重(w)+β×命中次数(w)\displaystyle \text{危险度}(w) = \alpha \times \text{词源权重}(w) + \beta \times \text{命中次数}(w)
这句话的意思是:一个词条的威胁程度,由“它来自哪里”和“它被撞见过多少次”共同决定,两个因素各占一定比重。
  1. 危险度函数衡量一个词条 w 的综合威胁程度,分数越高越危险。
    危险度(w)\displaystyle \text{危险度}(w)
  2. 词源权重词条来源的可信度,来自真实攻击样本的权重更高。
    词源权重(w)\displaystyle \text{词源权重}(w)
  3. 命中次数该词条在历史拦截日志中出现的次数,频次越高越可疑。
    命中次数(w)\displaystyle \text{命中次数}(w)
  4. 加权求和两个维度各自乘以权重系数后相加,得到最终风险分。
    α×词源权重(w)+β×命中次数(w)\displaystyle \alpha \times \text{词源权重}(w) + \beta \times \text{命中次数}(w)

正则表达式设计

小偷改了名字,小李照样认得出——因为他记的是“特征”。保安队长教的画像三要素:凌晨活动、黑帽衫、双肩包。特征比名字稳定,因为名字可以改,行为习惯很难改。正则表达式,就是给机器画特征画像的小语言。

如果黑名单只做“字符串包含”,攻击者把 admin 改成 adminn 就绕过了。正则表达式让一条规则覆盖一类模式。例如 r'\b(drop|delete|truncate)\s+(table|database)' 能匹配一类破坏性 SQL 指令,而不是某个具体字符串。

设计过滤正则时要注意三件事。第一是基础语法组合:字符类 [a-z]、量词 + * {m,n}、分组与或 |,它们把碎片拼成完整模式。第二是边界锚点:\b 单词边界、^ 行首、$ 行尾;不锚定边界时,规则 admin 会误伤 administrator。第三是贪婪与懒惰:.* 贪婪尽量多吃,.*? 懒惰最少匹配;贪婪匹配在长文本中容易扩大误伤范围,甚至造成匹配超时。

画像太粗会逮错人,太细会漏掉真凶。正则里的边界锚点和贪懒选择,就是在“粗”与“细”之间找平衡——这正是过滤规则设计最见功夫的地方。

IsBlocked(s)={Trueif ∃ r∈Rregex 且 r.match(s)Falseotherwise\displaystyle \text{IsBlocked}(s) = \begin{cases} \text{True} & \text{if } \exists\, r \in \mathcal{R}_{\text{regex}} \text{ 且 } r.\text{match}(s) \\ \text{False} & \text{otherwise} \end{cases}
这是“只要有一条正则规则命中,就判定为拦截”的数学表达。它说明了正则黑名单的判定方式:遍历规则集合,命中即阻断,全部落空则放行。
  1. 拦截判定对输入文本 s 给出“是否拦截”的布尔结论。
    IsBlocked(s)\displaystyle \text{IsBlocked}(s)
  2. 存在规则遍历当前正则规则集合,只需有一条规则命中即可。
    ∃ r∈Rregex\displaystyle \exists\, r \in \mathcal{R}_{\text{regex}}
  3. 规则匹配该条规则在输入文本 s 上产生匹配。
    r.match(s)\displaystyle r.\text{match}(s)
  4. 兜底放行没有任何规则命中时返回 False,允许输入通过。
    False\displaystyle \text{False}

高效多模式匹配

早高峰门口排长队,小李一个个翻名单根本来不及。岗亭升级成联动闸机:所有名单一次性录入系统,人一走过,多台设备同时比对,一秒扫一片,队伍消失了。

黑名单词库上万条时,如果每条规则独立对输入扫描一遍,复杂度就是 O(文本长度 × 规则数),延迟完全不可接受。这就是暴力匹配瓶颈。AC 自动机应运而生——一种能同时匹配海量关键词的算法,就像闸机里的多路摄像头,一轮扫描完成全部核验。

AC 自动机的核心是“字典树 + 失败指针”。先把全部黑名单词建成一棵字典树(Trie),每个节点代表一个前缀;失败指针则负责在匹配失败时,快速跳到当前文本后缀能匹配到的最长前缀节点,避免回退重扫。遍历一遍文本时每个字符只处理一次,总复杂度从 O(n×m) 降到 O(n+m+z),其中 z 是实际命中的模式数。

闸机把“人海战术”升级成“流水线自动化”。AC 自动机让万级词库的实时过滤成为可能,这是输入侧过滤器敢站在每一条用户请求前面的底气。

O(n+m+z)\displaystyle O(n + m + z)
这个公式说明:匹配耗时只和文本长度、词库总大小、实际命中数三者之和成正比,而不是相乘。词库翻十倍,耗时只线性增加,这就是大规模实时过滤的底气。
  1. 文本长度一次请求中待检查的输入字符数量。
    n\displaystyle n
  2. 模式总长度所有黑名单词条的长度之和,反映词库规模。
    m\displaystyle m
  3. 命中数量本次扫描实际匹配到的关键词个数。
    z\displaystyle z
  4. 线性复杂度总耗时与三者之和成正比,不再随规则数放大成乘积。
    O(n+m+z)\displaystyle O(n + m + z)

绕过对抗策略

小偷摸清了闸机的规则,开始“变装”:把 DELETE 写成 DeLeTe,把关键词拆开插进空格和下划线,甚至改用“把所有数据销掉”这种日常说法。岗亭守住了,但道高一尺魔高一丈——攻击者永远不会停。

绕过对抗是黑名单面临的最大挑战。攻击者不会乖乖提交原词。常见手段包括:大小写变形(大小写混写)、拆分拼接(在关键词中插入空格、下划线、零宽字符)、同义替换(用近义表达替代敏感词)、以及语义对抗——不依赖任何敏感词,靠整句语义表达攻击意图。

防守必须打组合拳。预处理层先做归一化:统一大小写、去除分隔符、全半角转换,再交给正则匹配。词库针对高频变体收录多份形态。但语义对抗本质上无法靠穷举解决,黑名单在这个层级只能“尽力而为”,需要与后续的语义模型和行为特征检测协同发力。

变装是攻,归一化和多形态收录是防。黑名单的边界很清楚:挡得住“看得见的变装”,挡不住“重新设计造型”——所以它永远只是第一道防线。

s′=Joinsep(Split(s,token))\displaystyle s' = \text{Join}_{\text{sep}}\left(\text{Split}(s, \text{token})\right)
这个公式描述了拆分拼接绕过的本质:先把字符串按 token 切开,再插入分隔符拼回去,生成一个原规则匹配不到的新形态。
  1. 原始输入用户提交的原始文本,比如 "DELETE"。
    s\displaystyle s
  2. 切分操作按 token(如空格、下划线)把字符串拆成片段。
    Split(s,token)\displaystyle \text{Split}(s, \text{token})
  3. 重新拼接用分隔符 sep 把片段拼回一个字符串,产生变形。
    Joinsep(⋯ )\displaystyle \text{Join}_{\text{sep}}(\cdots)
  4. 混淆结果绕过规则的新形态,防御方需要通过预处理归一化后才能识别。
    s′\displaystyle s'

误报治理机制

小李太紧张,把穿黑衣服买菜的老太太拦下来盘问了十分钟。老太太很生气——误抓让好业主体验变差。保安要学会分级执法:高危动作直接叫停,可疑情形上前问两句,大部分情况微笑放行。

误报治理是过滤系统走向生产环境的生死线。核心思想是“命中不代表恶意”。首先要做上下文感知判定:同样出现 delete,在 SQL 输入场景里极可能是注入攻击,在技术文档翻译里只是普通英文动词。其次用白名单豁免:对明确可信的语料来源跳过黑名单检查。最后是分级拦截:把命中映射为阻断、警告、放行三种动作。

为支持分级,每条规则输出一个风险分而不是简单的命中/未命中。风险分综合了词条等级、命中密度、上下文线索(如是否出现在 SQL 语句片段中)。阈值体系包含高危阈值和低危阈值,两个阈值把决策空间切成三段,也给了运维调整松紧的抓手。

好保安的第一原则是“不冤枉好人”。分级拦截、白名单豁免、上下文感知,共同给岗亭装上了判断力,也让业主们愿意继续配合安检。

Action(score)={blockscore≥θhighreviewθlow≤score<θhighpassscore<θlow\displaystyle \text{Action}(score) = \begin{cases} \text{block} & score \geq \theta_{\text{high}} \\ \text{review} & \theta_{\text{low}} \leq score < \theta_{\text{high}} \\ \text{pass} & score < \theta_{\text{low}} \end{cases}
这是分级拦截的决策规则:风险分超过高危阈值就阻断,低于低危阈值就放行,落在中间则进入人工审核。它避免了“一刀切”的误伤。
  1. 风险分过滤引擎对本次输入算出的风险得分,综合了多条证据。
    score\displaystyle score
  2. 高危阈值得分达到该值直接阻断,无需人工介入。
    θhigh\displaystyle \theta_{\text{high}}
  3. 低危阈值得分低于该值视为安全,放行并记录日志。
    θlow\displaystyle \theta_{\text{low}}
  4. 中间区间得分落在两阈值之间时,进入人工审核队列。
    θlow≤score<θhigh\displaystyle \theta_{\text{low}} \leq score < \theta_{\text{high}}

动态规则管理

社区通告栏每周更新,上周出现的新骗术这周就印成传单贴在最显眼的位置。岗亭的电子名单也实时同步:新增、停用、降级,不用把闸机拆了重装。

安全是持续对抗,词库必须动态演进。动态规则管理包含四件事:增量热更新——只推送变更的规则集而不是全量下发,避免重启和流量中断;灰度发布——新规则先在 1%~5% 的流量上生效,观察误报率达标后再全量开放;实时加载——规则文件变更后秒级生效;审计回溯——所有拦截和放行日志落盘,事后能复盘某次误报或漏报的根因。

增量更新用集合视角描述最清晰:线上规则集加上本次变更集,得到新规则集,不需要重建整份词库。灰度发布本质上是给变更加了一个“观察期”,以误报率和召回率作为放行指标。审计日志则为整个系统提供了可追溯性,是合规审查的基础。

岗亭的防线不是一堵死墙,而是一套会自我进化的活系统。这就是输入侧关键词过滤能在真实攻防中长期存活的原因。

Rt+1=Rt∪ΔR\displaystyle \mathcal{R}_{t+1} = \mathcal{R}_t \cup \Delta\mathcal{R}
这条公式说明:新规则集等于旧规则集加上本次增量变更的集合合并。规则库是“生长”出来的,而不是每隔一段时间推倒重来。
  1. 当前规则集t 时刻线上正在生效的规则集合。
    Rt\displaystyle \mathcal{R}_t
  2. 增量变更本次新增、修改或停用的规则集合。
    ΔR\displaystyle \Delta\mathcal{R}
  3. 集合合并把两套规则合并、去重,形成新的集合。
    ∪\displaystyle \cup
  4. 新规则集更新后立刻生效的规则集合,不需要停机重建。
    Rt+1\displaystyle \mathcal{R}_{t+1}

AI 应用场景

LLM 安全网关前置过滤

阶段:输入侧安全防护阶段

解决的问题:企业把大模型接入客服、办公助手等场景时,用户输入可能包含恶意注入、越狱模板、敏感数据。传统人工审核无法实时响应,且成本高昂。基于黑名单词库、正则表达式和 AC 自动机的输入侧过滤器在网关层做毫秒级拦截,把已知恶意输入挡在模型之外,在不增加推理成本的前提下显著降低风险。

具体案例:某金融公司智能客服上线前接入安全网关,黑名单内置数千条规则,覆盖 SQL 注入、提示词越狱与个人敏感信息正则(手机号、身份证号)。上线后一周内拦截恶意请求 2.3 万次,人工复审量下降 70%。

多语言平台实时内容过滤

阶段:内容审核与合规

解决的问题:社交平台的评论、弹幕、聊天机器人消息需要秒级过滤违规内容。传统外包人工审核时效差、尺度不一,无法支撑全球化运营。统一词库管理平台维护多语言黑名单,用正则覆盖变体,用 AC 自动机支撑大词量实时匹配,在内容发布入口完成第一层过滤。

具体案例:某出海社交 App 覆盖 12 种语言,黑名单词库按语言分域管理,每条规则带语言标签和威胁等级。平均过滤耗时低于 15 毫秒,误报率通过白名单和分级拦截控制在 0.3% 以内。

企业 DLP 防数据泄露

阶段:数据安全与合规

解决的问题:员工向外部大模型提问时可能无意泄露商业机密或个人信息。传统 DLP 只做网络层限制,无法理解会话语义。输入侧过滤在终端或网关注入关键词和正则规则,如合同编号、项目代号等模式,在请求发出前阻断敏感内容。

具体案例:某制造业企业内部 AI 助手在输入侧启用正则规则 r'(项目|合同)[-_ ]?[A-Z]{3,}[-_ ]?\d+' 等模式,成功拦截多起员工无意提交的机密编号,并通过审计日志定位到部门和人员,完成安全培训闭环。

Python 演示

python65 行
import re class PromptFilter:    SENSITIVE_WORDS = {        "sql": ["select", "union", "delete", "drop", "admin"],        "privacy": ["身份证", "手机号", "银行卡"],    }     LEVEL_ACTION = {        "block": ["sql"],        "review": ["privacy"],    }     def __init__(self):        self.rules = self._compile_rules()        self.whitelist = ["tutorial", "教学"]        self.stats = {"blocked": 0, "review": 0, "passed": 0}     def _compile_rules(self):        rules = {}        for category, words in self.SENSITIVE_WORDS.items():            pattern = r"\b(" + "|".join(re.escape(w) for w in words) + r")\b"            rules[category] = re.compile(pattern, re.IGNORECASE)        return rules     def update_rules(self, category, new_words):        self.SENSITIVE_WORDS.setdefault(category, []).extend(new_words)        self.rules = self._compile_rules()     def check(self, text):        if any(w in text for w in self.whitelist):            self.stats["passed"] += 1            return "passed", "白名单豁免"        for category, regex in self.rules.items():            matched = regex.findall(text)            if matched:                detail = "%s:%s" % (category, ",".join(matched))                if category in self.LEVEL_ACTION["block"]:                    self.stats["blocked"] += 1                    return "blocked", detail                self.stats["review"] += 1                return "review", detail        self.stats["passed"] += 1        return "passed", ""  def main():    f = PromptFilter()    samples = [        "SELECT * FROM users WHERE name='admin'",        "请把 DELETE FROM logs 写进教学文档",        "我的身份证是 110101199001011234",        "今天天气不错",    ]    for s in samples:        action, detail = f.check(s)        print("%-7s => %s" % (action, detail))     f.update_rules("sql", ["truncate"])    print(f.check("TRUNCATE table users"))    print(f.stats)  if __name__ == "__main__":    main()
目的:实现一个带分词级正则黑名单、白名单豁免和分级拦截的提示词过滤器,并演示动态更新规则。
  1. pattern = r"\b(" + "|".join(re.escape(w) for w in words) + r")\b"把同一分类的词表编译成一条带单词边界的正则,re.escape 保证特殊字符不被误解释。
  2. rules[category] = re.compile(pattern, re.IGNORECASE)编译时忽略大小写,让大小写变形绕过少一条路。
  3. if any(w in text for w in self.whitelist)白名单豁免:含“教学”标记的文本直接放行,避免误报。
  4. matched = regex.findall(text)找出文本中所有命中词,而不是只要有一个就停,便于审计。
  5. if category in self.LEVEL_ACTION["block"]按分类分级:SQL 类直接阻断,隐私类转人工审核。
  6. self.rules = self._compile_rules()增量更新后整体重新编译,让新词条立即生效。
  7. f.update_rules("sql", ["truncate"])演示热更新:新增词条后无需重启即可拦截新攻击。

常见误区

误区“我把词库建好后上线,之后基本不用管,反正常见攻击词都收录了,应该够用很久。”

正解攻击者每天都在制造新词和新变形,静态词库的拦截率会随时间快速衰减。生产环境必须配套增量热更新、灰度发布和审计回溯,让规则集持续进化。就像小区通告栏如果停更,新骗术第二天就没人知道,防线自然形同虚设。

为何常见:上线时精心构建词库会带来“完成感”,而且短期效果确实不错,容易让人忽略长期维护的隐性成本。

误区“我宁可多拦也不能漏,正则范围写得广一点、匹配用贪婪模式,效果肯定更好。”

正解正则过宽会显著抬高误报率,贪婪匹配还可能造成长文本匹配超时和性能下降。正确做法是用边界锚点精准定位目标,用懒惰匹配控制匹配范围,并靠分级拦截给“灰色地带”留缓冲,而不是一味追求严苛。

为何常见:“严格等于安全”的直觉在安全领域很常见,但过滤系统本质是权衡题,误报率和漏报率必须放在一起看。

误区“只要上了黑名单和正则过滤,提示词注入、越狱攻击就都能被拦住了。”

正解黑名单只能拦截已知模式。语义对抗、编码混淆、思维链诱导等新型攻击可以完全不依赖敏感词,从语义上绕开规则。黑名单是必要的“第一道防线”,但必须与语义检测、行为监控等后续防线协同,才能构成完整防御。

为何常见:黑名单实现简单、效果立竿见影,容易让人误以为单点防御就是安全的全貌。

误区“把所有输入转成小写再匹配,大小写绕过就失效了,这样处理应该就足够了。”

正解大小写统一只解决一种变形。攻击者还有全半角混用、插入零宽字符、拆分拼接、同义替换、Unicode 混淆等多种手段。真正工程化的做法是构建“归一化预处理 + 多形态词库 + 语义模型兜底”的完整管线。

为何常见:网上流传的绕过示例大多从大小写入手,教程看多了容易形成“归一化等于万能解药”的错觉。

面试题

Q1. 输入侧黑名单过滤在 AI 应用中的首要目标是?

单选题 · easy

  • A.加快推理的处理速度
  • B.拦截已知恶意内容← 正确答案
  • C.提升文本生成质量
  • D.缩减提示词长度

答案:B。黑名单过滤是在请求进入模型之前拦截已知恶意或敏感内容,就像小区保安在门口先核对名单再放人进门。它发生在模型之外,不参与推理过程,因此不会改变推理速度、生成质量或提示词长度。

Q2. 正则表达式中 \b 的含义是?

单选题 · easy

  • A.单词边界← 正确答案
  • B.空白字符
  • C.数字字符
  • D.换行字符

答案:A。\b 匹配单词边界,用 \badmin\b 只会命中独立的 admin,不会误伤 administrator。空白字符对应 \s,数字字符对应 \d,换行对应 \n,这些都是基础字符类。

Q3. 黑名单词库引入“分级拦截”主要为了解决?

单选题 · easy

  • A.降低误报误杀率← 正确答案
  • B.提升匹配处理速度
  • C.缩小词库占用体积
  • D.支持丰富多语言

答案:A。分级拦截把命中结果分成阻断、审核、放行三档,让“可疑但非高危”的输入有缓冲空间,避免一概拦截误伤正常用户。它并不直接优化匹配速度或词库体积,多语言覆盖是词库构建阶段的事。

Q4. AC 自动机相比朴素多模式匹配的核心优势是?

单选题 · mid

  • A.一次扫描完成全部匹配← 正确答案
  • B.占用内存空间更少
  • C.匹配正则自动生成
  • D.能够自动扩充词库

答案:A。朴素方法对每条规则各扫描一遍文本;AC 自动机把全部模式建成字典树,再用失败指针避免回退,一次遍历文本即可完成所有模式的匹配。它不负责生成正则或扩充词库,内存占用也未必更少。

Q5. 下列哪些属于黑名单过滤常见的绕过手段?

多选题 · mid

  • A.大小写变形攻击← 正确答案
  • B.插入特殊字符混淆← 正确答案
  • C.同义替换改说法← 正确答案
  • D.Base64编码伪装← 正确答案

答案:ABCD。四种都是真实存在的绕过手段。大小写混写、插入空格或零宽字符、同义替换、编码伪装都会让敏感词不再以朴素形式出现,所以生产级过滤器必须做归一化预处理,并维护多形态词库。

Q6. 白名单豁免机制的主要作用是?

单选题 · mid

  • A.放行合规场景的敏感词← 正确答案
  • B.替代黑名单拦截机制
  • C.提升文本命中效果
  • D.扩大恶意拦截范围

答案:A。当敏感词出现在可信语料中(比如技术文档里的教学示例),白名单会放行这些合法输入,从而把误报率压下来。它是黑名单的补充而非替代,也不会提升命中率或扩大拦截范围。

Q7. 动态规则管理通常包含以下哪些能力?

多选题 · mid

  • A.增量式热更新← 正确答案
  • B.灰度发布试点← 正确答案
  • C.审计回溯日志← 正确答案
  • D.正则自动生成

答案:ABC。增量热更新让规则变更秒级生效,灰度发布让高风险规则先在少量流量上试运行,审计回溯让每次拦截和放行都有据可查。正则自动生成不是常规能力——过滤正则仍需要安全工程师编写和评审。

Q8. 关于贪婪匹配与懒惰匹配,下列说法正确的是?

单选题 · hard

  • A.贪婪匹配到最后一个满足位置← 正确答案
  • B.懒惰匹配会尽量匹配更多
  • C.两种匹配结果总是一致
  • D.懒惰匹配与过滤毫无关系

答案:A。.* 贪婪会一直匹配到最后一个满足条件的位置,容易扩大误伤范围;.*? 懒惰则尽量少匹配。两种模式结果可能完全不同,在过滤规则中选错会让拦截范围明显偏移,因此与过滤关系密切。

Q9. 构建高质量黑名单词库的可靠来源包括?

多选题 · hard

  • A.历史拦截日志沉淀← 正确答案
  • B.公开攻击样本库← 正确答案
  • C.安全社区威胁情报← 正确答案
  • D.随机抽取字典组合

答案:ABC。历史日志、攻击样本库、威胁情报都是经过验证的真实来源,词条自带攻击意图标注,分级准确。随机字典虽然能提供大量词,但缺少威胁语义,直接进词库会显著拉高误报率,必须经过筛选和标注。

Q10. 面对语义同义替换绕过(如把“删除全部数据”换一种说法表达),哪项应对更有效?

单选题 · extreme

  • A.扩展语义变体词库← 正确答案
  • B.大量增加正则数量
  • C.完全依赖白名单机制
  • D.取消正则只靠字符串

答案:A。语义替换的变体空间近乎无限,纯靠堆正则或字符串无法穷举。更有效的是持续收集和扩展语义变体词库,并配合语义模型做上下文判定——这也是黑名单过滤必须与更高层防线协同的原因。