用途:该技能聚焦 ReDoS(正则表达式拒绝服务,CWE-1333)这一安全反模式,适用于生成或审查使用正则表达式进行输入校验、解析等场景的代码,帮助识别并修复可被恶意输入触发的性能与可用性问题。严重级别为高危。
主要能力:说明灾难性回溯的成因,即嵌套量词(如 (a+)+)或重叠分支导致的指数级时间复杂度;给出可识别的高危模式,如 (a+)+、(a*)、(a|a)+、(a?),以及重叠分支 (a|ab)*;提供检测思路,包括静态分析工具(如 Node.js 的 safe-regex)、用“几乎匹配”的长字符串测试执行时间是否随长度剧增。
必要用法与修复:避免嵌套量词,将 (a+)+ 改写为 a+;避免重叠分支,重复组内用 (a|b) 而非 (a|ab);在复杂正则前限制输入长度;使用匹配超时;或改用 ReDoS 安全引擎(如 Google RE2)以保证线性时间。资料给出的安全示例为 /^a+b$/,并演示输入长度上限作为纵深防御。
适用场景与限制:适合代码审查、安全编码规范与教学。超时与长度限制只能缓解、不能修复底层缺陷;具体工具配置、性能数据与集成方式资料未提供。