URL参数深度分析 - 解码并检测潜在注入
分解查询参数,高亮可能存在的SQL注入或XSS模式,辅助安全审查。
UD5工具箱
检测正则表达式中的灾难性回溯模式,评估 ReDoS 风险等级
(a+)+ 嵌套量词
([a-zA-Z]+)* 宽字符类嵌套
(.*)+ 点号嵌套
(a|aa)+ 交替重叠
(\w+\s?)* 常见陷阱
([^,]+)* 否定类嵌套
(\d+)+ 数字嵌套
(a+|b+)+ 多分支嵌套
[0-9]{3}-[0-9]{4}
^(?:abc|def)$
a+b+c+
(X+)+ (X*)*
(.*)+ (\w+)*
(a|aa)+
(a+|b+)+
([^X]+)*
ReDoS (Regular Expression Denial of Service) 是一种利用正则表达式灾难性回溯(Catastrophic Backtracking)导致CPU资源耗尽的安全漏洞。当正则引擎尝试匹配一个精心构造的字符串时,回溯次数呈指数级增长,导致服务器响应缓慢甚至完全无响应。
例如,正则 (a+)+ 匹配字符串 aaaaaaaaaaaaaaaaaaaa! 时,引擎会尝试所有可能的分组组合,回溯次数可达数百万次,消耗大量CPU时间。
关键特征:嵌套的量词结构(如 (X+)+、(X*)*)是导致灾难性回溯的主要原因。
以下模式是常见的危险信号:
(a+)+、(a*)*、(a+)* — 量词内部包含另一个量词(.*)+、(\w+)*、([a-zA-Z]+)+ — 匹配范围广的字符类被量词包裹后再加量词(a|aa)+、(ab|a)+ — 多选分支中一个分支是另一个的前缀([^,]+)* — 否定字符类配合嵌套量词(option1|option2|option3)* 配合特定输入修复策略:
(a+)+ 改为 a+(大多数情况下外层量词是多余的)(?>...)),防止回溯进入组内。JS暂不支持,但可用其他方式模拟a++(JS不支持,但可用更精确的字符类替代).* 替换为更具体的 [^delimiter]*^ 和 $ 限定匹配边界,减少回溯空间(a|aa)+ 改为 a+re2库或设置超时包装)是的。JavaScript 使用回溯算法(Backtracking)实现正则匹配,这意味着它天然容易受到 ReDoS 攻击。V8引擎(Chrome/Node.js)虽然有一些优化(如Irregexp引擎的快速路径),但遇到嵌套量词时仍可能触发灾难性回溯。
与一些使用Thompson NFA(如Go的re2、Rust的regex)的引擎不同,JS的正则引擎在理论上可能对某些模式产生指数级时间复杂度。因此,在Node.js服务端应用中,ReDoS是一个需要认真对待的安全问题。
Node.js防护建议:使用 re2 库替代原生RegExp,或使用 vm 模块设置脚本超时。
本工具使用两阶段分析:
[...]、转义序列、分组结构等。performance.now() 对测试字符串进行实际匹配计时。如果匹配时间超过阈值(50ms),则标记为高风险。测试在受控条件下进行,限制字符串长度以避免浏览器卡死。综合静态分析和动态测试结果,给出五级风险评级(安全/低危/中危/高危/严重)及修复建议。
(?:(?:\"|'|\]|\}|\\|\d|(?:nan|infinity|true|false|null|undefined|symbol|math)|\`|\-|\+)+[)]*;? 导致全球性服务中断约30分钟,影响数百万网站。[\s\u200b]+$ 加上特定Unicode字符导致严重性能问题。这些案例表明,即使是在经过严格审查的生产代码中,ReDoS漏洞也可能隐藏多年才被触发。
| 语言/引擎 | 算法 | ReDoS风险 |
|---|---|---|
| JavaScript (V8) | 回溯 (Backtracking) | 高 |
| Python (re) | 回溯 | 高 |
| PHP (PCRE) | 回溯 + JIT优化 | 中高 |
| Go (re2) | Thompson NFA | 低(线性时间保证) |
| Rust (regex) | 混合(NFA+DFA模拟) | 低 |
| Java (java.util.regex) | 回溯 | 高 |
| .NET | 回溯 + 有限超时 | 中(有超时保护) |
分解查询参数,高亮可能存在的SQL注入或XSS模式,辅助安全审查。
从内置库随机选取主流浏览器的User-Agent字符串,一键复制用于请求头。
输入字符串并使用 URL.canParse() 判断是否为有效 URL,不抛出异常。
利用浏览器Crypto API生成密码学安全的随机字节序列及对应的整数和十六进制。
模拟接收包含一次性密码的短信,展示 navigator.credentials.get({otp}) 如何自动提取 OTP 并填入表单。
粘贴Shadow DOM代码,直观预览封装组件内部的CSS作用域及其对外界的影响。
团队成员在会前用温度计匿名标情绪,汇总显示利于主持人引导。
嵌套的彩色方块,点击内层观察事件传播顺序,直观理解addEventListener的第三个参数。
在 Favicon 上叠加未读消息数量的数字角标,生成相应 JS 代码。
定义脱敏规则(如手机号中间4位星号,邮箱部分隐藏),对 JSON 或 CSV 数据执行批量掩码。
模板化记录团队成员昨日完成、今日计划与阻塞项,支持导出Markdown便于分享。
调用设备联系人选择界面,获取用户选中的联系人信息(需支持环境)。
请求Idle Detection权限,监测用户是否离开或处于空闲状态,实时更新状态。
添加股票代码、加密货币或自定义资产,手动输入价格或获取公开API(演示)以追踪变化。
从任意分布中抽取样本并绘制均值分布直方图,随着样本量增大趋近正态分布。
演示元素进入视口时触发懒加载和曝光埋点,并展示当前可见比例。
将彩色照片一键转为怀旧棕褐色调,调节强度,营造老照片氛围,纯前端滤镜处理。
演示如何用Intersection Observer实现滚动到底部自动加载内容的经典模式。
填写关键医疗与联络信息,生成钱包可存放的打印卡片。
输入Base32密钥手动生成6位动态验证码,兼容Google Authenticator,前端算法实现不联网。
浏览器端实现DES对称加密算法,支持ECB/CBC模式及自定义密钥,安全处理敏感数据,无需上传服务器。
输入日期和数值,生成类似GitHub贡献图的年度热力图,可自定义颜色和统计。
仅显示时间和开始/暂停按钮的超轻量番茄钟,可一直固定在角落。
逐步演示OAuth2授权码、隐式及密码模式交互流程,帮助理解重定向、Token交换与刷新机制。
图文演示N95/KN95口罩正确佩戴与正压-负压密合测试步骤。
编写正则表达式并指定替换模式(如 '$1-$2'),实时查看文本替换结果,支持命名捕获组。
构建带有自定义头和方法复杂跨域请求,检查预检与响应。
输入长链接,生成一个伴随随机短码的完整离线URL(可自定义域名前缀)。
随机将行业、技术和目标用户拼接,生成充满槽点的奇葩创业点子,仅供娱乐。
拍照并记录家电、首饰的型号与序列号,用于保险理赔或失窃报案。