Cloudflare去年瘫痪事故的罪魁祸首.*(?:.*=.*)
最近在写正则表达式,看见loc网友分享的这篇文章,正好拿来看看。
导致瘫痪最根本原因是CF防火墙过滤规则的正则表达式中包含了.*(?:.*=.*),而这个语句会导致大量回溯。
比如每个查询后代入新变量,循环执行多次,查询内容越长执行次数越多,直至CPU崩溃。
?:是忽略括号内匹配的标识,.*(?:.*=.*)基本可以看作.*(.*=.*)。
作为一个菜鸟,很好奇这个简短的正则式为啥会导致回溯?
作为一个菜菜鸟,这在说什么