我最近意识到了 正则表达式分布式拒绝服务攻击攻击,并决定根除所谓的“邪恶”正则表达式模式,只要我能在我的代码库中找到它们——或者至少那些用于用户输入的模式。上面的 OWASP 链接和 维基百科给出的例子是有帮助的,但它们不能很好地用简单的术语解释问题。
对邪恶正则表达式的描述,来自 维基百科:
以 维基百科为例:
(a+)+
([a-zA-Z]+)*
(a|aa)+
(a|a?)+
(.*a){x}
这是一个没有更简单解释的问题吗?我正在寻找一些方法,使得在编写正则表达式时更容易避免这个问题,或者在现有的代码库中找到它们。