# ReDoS 正则拒绝服务扫描器

扫描一个或多个正则表达式的灾难性回溯风险，模拟恶意输入并给出更安全的替代建议

> 标准页面: https://elysiatools.com/zh/tools/redos-regex-scanner

- **分类:** Security

- **关键词:** redos, regex, 安全, 灾难性回溯, benchmark

## 概述

逐行粘贴正则表达式，并可设置 flags、恶意输入长度上限和模拟次数。工具会结合静态规则和近失配输入模拟，判断该模式是否可能出现灾难性回溯。

报告内容：
- 静态风险发现
- 最坏输入耗时
- 风险评分与等级
- 更安全的重写建议

## 输入项

- **正则列表** (textarea): (a+)+$ ^(\w+\s?)*$
- **标志位** (text)
- **最大恶意输入长度** (number)
- **模拟次数** (number)

## 适用场景

- 在代码审查阶段，需要验证新引入的正则表达式是否存在性能隐患时。
- 处理用户提供的动态输入或复杂文本匹配逻辑，担忧引发服务器 CPU 飙升时。
- 进行应用安全测试（AST），排查系统中潜在的正则拒绝服务（ReDoS）漏洞时。

## 工作原理

- 在文本框中逐行输入需要检测的正则表达式（无需包含前后的斜杠）。
- 根据需要配置正则标志位（如 i, m, u）以及最大恶意输入长度和模拟运行次数。
- 工具将结合静态启发式规则和动态基准测试，模拟最坏情况下的匹配耗时。
- 生成包含风险等级、最长耗时及安全替代方案的 JSON 格式分析报告。

## 使用案例

- 后端 API 接口校验用户输入（如邮箱、密码复杂度、富文本标签）前的安全排查。
- 前端表单验证规则的性能优化，防止复杂正则导致浏览器主线程阻塞。
- 安全团队编写自动化 CI/CD 扫描脚本，批量检测代码库中的高危正则表达式。

## 常见问题

### 什么是灾难性回溯？

当正则表达式包含嵌套的量词（如 `(a+)+`）且匹配失败时，正则引擎会尝试所有可能的匹配路径，导致计算时间呈指数级增长，从而耗尽 CPU 资源。

### 最大恶意输入长度有什么作用？

它决定了工具在模拟攻击时生成的“近失配”字符串的最大长度。较长的输入能更明显地暴露指数级时间复杂度的缺陷。

### 为什么需要设置模拟次数？

模拟次数用于在基准测试中重复执行匹配操作，以消除偶然误差，从而得出更准确的最坏输入耗时评估。

### 工具能自动修复有漏洞的正则吗？

工具会提供静态风险发现和更安全的重写建议（例如消除嵌套量词），但建议开发者根据实际业务逻辑进行测试和调整。

### 支持哪些正则表达式语法？

工具主要基于 JavaScript 正则引擎标准进行静态分析和动态模拟测试，支持常见的正则语法及 i, m, u 等标志位。

## 相关工具

- [正则表达式速查表](https://elysiatools.com/zh/tools/regex-cheat-sheet): 可搜索、多语言的正则表达式语法速查表——字符类、锚点、量词、分组与引用、环视断言、转义序列和标志位，并内置快速测试器
- [正则执行追踪器](https://elysiatools.com/zh/tools/regex-debugger): 逐步展示正则表达式如何匹配字符串：可视化每次匹配尝试、部分成功、回溯与捕获——是理解正则行为的认知工具，而非只看最终结果
- [正则表达式铁路图可视化器](https://elysiatools.com/zh/tools/regex-railroad-diagram-visualizer): 把正则表达式渲染为 SVG 铁路图（语法图），显示字面量、分组、分支与重复，并标注捕获组编号与标志说明
- [文本文件替换器](https://elysiatools.com/zh/tools/text-file-replacer): 在文件中查找并替换文本，支持正则表达式、多重模式和备份创建
- [正则表达式测试](https://elysiatools.com/zh/tools/regex-tester): 测试正则表达式匹配文本
- [文本文件搜索器](https://elysiatools.com/zh/tools/text-file-searcher): 在文件中搜索文本模式，支持高级选项（正则表达式、区分大小写、全字匹配等）
- [正则表达式性能基准测试](https://elysiatools.com/zh/tools/regex-benchmark): 比较不同正则表达式的性能，识别瓶颈并检测退化情况
- [正则体检/规范检查](https://elysiatools.com/zh/tools/regex-linter): 检测正则表达式中的错误模式和风险，包括灾难性回溯、未锚定模式等，并提供重写建议

## 示例

- [危险正则表达式模式](https://elysiatools.com/zh/samples/risky-regex): 展示安全漏洞、性能问题和常见反模式的正则表达式集合
- [正则替换示例](https://elysiatools.com/zh/samples/regex-replace): 用于文本转换和数据清洗的常用正则替换模式集合
- [常用正则表达式](https://elysiatools.com/zh/samples/regex-samples): 用于验证和匹配的常用正则表达式模式
- [Android Java 字符串处理示例](https://elysiatools.com/zh/samples/android-string-processing-java): Android Java 字符串处理示例，包括字符串分割连接、正则表达式和字符串替换

## 相关内容

- [正则测试、可视化与安全审查工作流](https://elysiatools.com/zh/hubs/regex-utility): 通过语法参考、匹配测试、结构可视化、替换预览、性能对比和 ReDoS 扫描，构建更可靠的正则表达式。
