antirez(Redis 作者)把 TRE 正则引擎写进了 Redis——这事的信号比看起来大:它意味着「正则表达式拒绝服务攻击」(ReDoS,恶意构造的正则让程序陷入指数级计算导致服务瘫痪)正被严肃对待,而 Python 标准库在这方面的防护几乎是裸奔。

这是什么

TRE 是 Ville Laurikari 开发的正则表达式引擎,核心特点是不使用回溯算法。Python 标准库的 re 模块基于回溯——匹配失败时回头尝试其他路径,精心构造的输入可让计算量指数爆炸,这就是 ReDoS 的原理。TRE 用非确定性有限自动机(NFA,一种匹配时间与输入长度成正比的算法),天然免疫这类攻击。

Simon Willison 看到 antirez 的动作后,让 Claude Code 用 ctypes(Python 调用 C 库的接口)为 TRE 写了实验性 Python 绑定,实测对恶意正则的防御效果——TRE 远优于 Python 标准库。

行业怎么看

我们注意到一个趋势:基础设施项目开始正视 ReDoS。Redis 不是第一个——Cloudflare 早年公开过因正则回溯导致的全球级故障,Rust 的 regex 库从设计之初就放弃了回溯。antirez 的选择进一步验证方向。

但反对声音同样存在。TRE 不支持回溯意味着无法处理反向引用(backreference,正则中引用之前匹配的内容,如 (\w)\1 匹配连续重复字符)等高级特性,依赖这些特性的项目迁移成本不低。也有开发者认为,多数场景下用超时机制(如 Python 3.11 的 re.timeout)就够了,换引擎属于过度工程。

对普通人的影响

对企业 IT:后端服务若接受用户输入并用于正则匹配,ReDoS 是真实攻击面。代码审计应增加正则安全性检查,或考虑用 RE2/TRE 等非回溯引擎替代。

对个人职场:后端开发者了解 ReDoS 原理和防御手段,正从加分项变为基本要求——尤其涉及 API 网关和 WAF 规则编写的岗位。

对消费市场:间接影响。更安全的正则引擎意味着更少因恶意输入导致的服务中断,对依赖云服务的中小企业是隐性利好。