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

jQuery 3.7.1是否存在ReDoS漏洞?求替代解决方案

jQuery 3.7.1 ReDoS漏洞的替代解决方案

针对你遇到的jQuery 3.7.1中动态正则导致的ReDoS问题,这里有几个可行的解决思路:

  • 优先升级到官方修复版本:虽然你当前用的是3.7.1,但jQuery官方通常会针对这类安全漏洞发布补丁更新。可以关注jQuery的官方更新日志,一旦推出包含该ReDoS修复的版本(比如3.7.2及以上),直接升级是最省心的方案,官方会从根源上修复动态正则的不安全用法。

  • 手动转义正则元字符:对于代码中像A=new RegExp("^"+t+"$")这类动态拼接正则的场景,给t参数加一层正则元字符转义,避免用户输入的内容被解析成正则的特殊语法。可以写一个简单的转义函数:

function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
// 替换原代码为:
A = new RegExp("^" + escapeRegExp(t) + "$");

转义后,即使用户输入包含*、+这类可能触发ReDoS的字符,也会被当作普通字符串处理,不会阻塞主线程。

  • 用字符串方法替代正则匹配:如果业务场景允许,直接替换掉动态正则的使用。比如你例子里的^"+t+"$"是做完全匹配校验,直接用字符串全等判断目标字符串 === t就能实现相同效果,既安全又比正则性能更好,彻底规避正则相关的风险。

  • 限制输入长度:在接收用户输入的环节,给t这类参数设置长度上限(比如最多允许30-50个字符)。短字符即便是恶意构造的正则,处理时间也会被控制在合理范围内,不会造成主线程长时间阻塞。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 02:33:11