PHP-拒绝服务正则表达式

PHP-拒绝服务正则表达式,php,regex,Php,Regex,当我的代码通过内部软件扫描时,它会抛出以下错误: if (preg_match("/^attachment; filename=\"".$_GET['get_part']."\"$/",$part['Content-Disposition'])) 他们的解释是: 正则表达式计算器和相关方法的实现中存在一个漏洞,在计算嵌套和重复正则表达式组的重复和交替重叠时,该漏洞可能导致线程挂起。此缺陷可用于执行拒绝服务(DoS)攻击 没有已知的正则表达式实现可以免疫此漏洞 如何消除此问题?您不应将用户输

当我的代码通过内部软件扫描时,它会抛出以下错误:

if (preg_match("/^attachment; filename=\"".$_GET['get_part']."\"$/",$part['Content-Disposition']))  
他们的解释是:

正则表达式计算器和相关方法的实现中存在一个漏洞,在计算嵌套和重复正则表达式组的重复和交替重叠时,该漏洞可能导致线程挂起。此缺陷可用于执行拒绝服务(DoS)攻击

没有已知的正则表达式实现可以免疫此漏洞


如何消除此问题?

您不应将用户输入直接用作正则表达式的一部分。使用
preg_quote()
对其进行转义,使其与实际匹配

if (preg_match("/^attachment; filename=\"".preg_quote($_GET['get_part'], '/')."\"$/",$part['Content-Disposition']))

不应将用户输入直接用作正则表达式的一部分。使用
preg_quote()
对其进行转义,使其与实际匹配

if (preg_match("/^attachment; filename=\"".preg_quote($_GET['get_part'], '/')."\"$/",$part['Content-Disposition']))

当评估嵌套和重复正则表达式组的重复和交替重叠时
是的,这将与此部分有关,然后
$\u GET['GET\u part']
eh?尝试构造字符串,然后将其发送到
preg\u match()
。他们可能不想让你构造动态正则表达式。你能给我一个例子吗,因为我不明白如何做。
当评估嵌套和重复正则表达式组的重复和交替重叠时
是的,这将与此部分一起
$\u GET['GET\u part']
eh?在将字符串发送到
preg\u match()之前,请尝试构造该字符串
。他们可能不想让你构造动态正则表达式。你能给我举个例子吗,因为我不明白怎么做。3个up投票,但没有人注意到PHP中没有
preg\u escape
函数。3个up投票,但没有人注意到PHP中没有
preg\u escape
函数。