一行正则表达式如何让全球互联网瘫痪27分钟——从Cloudflare宕机事件看回溯灾难的技术真相
2019年7月2日,一个普通的周二下午,全球数十万网站突然无法访问。Cloudflare的全球服务中断了27分钟,受影响的网站包括Discord、Omegale、Buffer等知名服务。这不是黑客攻击,不是硬件故障,也不是配置错误。罪魁祸首是一行正则表达式。 ...
2019年7月2日,一个普通的周二下午,全球数十万网站突然无法访问。Cloudflare的全球服务中断了27分钟,受影响的网站包括Discord、Omegale、Buffer等知名服务。这不是黑客攻击,不是硬件故障,也不是配置错误。罪魁祸首是一行正则表达式。 ...
2007年,Russ Cox发表了一篇影响深远的文章《Regular Expression Matching Can Be Simple And Fast》。他做了一个令人震惊的对比测试:用正则表达式 a?^n a^n(n个可选a后跟n个a)匹配字符串 a^n(n个a)。当n=29时,Perl需要超过60秒,而Thompson NFA实现只需要20微秒——相差三百万倍。更惊人的是,当n=100时,Thompson NFA只需不到200微秒,而Perl理论上需要超过10^15年。 ...
2019年7月2日,Cloudflare的全球网络在27分钟内完全瘫痪。原因不是黑客攻击,不是硬件故障,而是一行正则表达式:(?:(?:\"|'|\]|\}|\\|\d|(?:nan|infinity|true|false|null|undefined|symbol|math)|\|-|+)+[)];?((?:\s|-|~|!|{}||||+).(?:.=.*)))`。 ...
2019年7月2日,保护着全球约20%互联网流量的Cloudflare遭遇了一次持续27分钟的全球性宕机。原因令人意外:一个正则表达式。 更准确地说,是这个正则表达式: ...