灾难性回溯 正则表达式如何致使ReDoS漏洞
当用户需要搜索和替换文本时,正则表达式就会派上用场。然而,在某些情况下,它们可能会导致系统变慢,甚至容易受到ReDoS攻击。 ReDoS攻击分为两种类型: (1)将带有恶意模式的字符串传递给应用程序。然后,这个字符串被用作正则表达式,从而导致ReDoS攻击。 (2)将特定格式的字符串传递给应用程序。然后,这个字符串由一个易受攻击的正则表达式计算,从而导致ReDoS攻击。 任何ReDoS攻击的要点都是在应用程序中使用易受攻击的正则表达式。将某种格式的字符串传递给正则表达式会导致其计算时间过长。 以下检查几个正则表达式的漏洞。 在这里编写了一个小程序,它显示了正则表达式的计算时间如何依赖于计算字符串中的字符数的图形。在接下来的示例中,将使用这个程序展示灾难性的回溯。 示例1 以下看一个简单的合成例子: (x+)+y 比较一下(x+)+y表达式在两种情况下的计算时间: (1)正则表达式的输入接受与指定模式一一对应的字符串。同时,每个后续字符串的长度都比前一个字符串多一个字符。 (2)正则表达式的输入接受不匹配模式的字符串(字符串末尾没有y字符)。同时,每个后续字符串的长度都比前一个字符串多一个字符。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |