You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

URL路径及查询参数正则优化:修复多项式正则ReDoS警告

正则优化方案

原有正则触发ReDoS告警、允许连续斜杠的核心原因是使用了嵌套可变量词结构((\/)[\dA-Za-z-]+)*,这种外层*套内层+的写法在匹配长异常字符串时,回溯次数会随输入长度暴涨,属于代码扫描重点拦截的多项式正则写法;再加上市面路径和查询参数的匹配边界不清晰,字符组存在重叠匹配空间,进一步放大了回溯风险。

优化后可直接使用的正则

/^\/(?:[\da-zA-Z-]+\/)*[\da-zA-Z-]*\/?(?:\?[&\da-zA-Z=-]*)?$/

逻辑说明

这个写法完全覆盖所有校验规则,同时从结构上消灭了回溯风险:

  • 开头强制匹配/,直接拦截不以斜杠开头的非法链接
  • 路径部分用(?:[\da-zA-Z-]+\/)*匹配多段路径,严格要求每段路径内容(仅允许字母、数字、短横线)后面才能跟斜杠,从根本上杜绝连续斜杠的问题
  • 支持最后一级路径为空、或者末尾带斜杠的场景,覆盖根路径/、路径以/结尾的合法情况
  • 查询参数部分固定以?作为和路径的分割边界,和路径部分完全独立,不存在匹配重叠,后面仅允许参数需要的&、=、字母、数字、短横线,不会拦截合法的键值对参数
  • 所有量词没有嵌套重复结构,匹配过程是线性的,不会产生指数级回溯,不会触发ReDoS告警

测试用例验证结果

  • 合法场景全部通过:/、/section、/section/article-1、/section/article-1/、/section/article-1?x=y&hello=world 均可正常匹配
  • 非法场景全部拦截:非斜杠开头的section/article-1、带特殊字符的/section/!$*、带括号的/x(1)、带连续斜杠的//section 均会匹配失败

内容的提问来源于stack exchange,提问作者Drkawashima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:36:23