Когда мой код проходит сканирование OWASP топ-10 с помощью нашего внутреннего программного обеспечения, он выдает мне следующую ошибку:
if (preg_match("/^attachment; filename=\"".$_GET['get_part']."\"$/",$part['Content-Disposition']))
Они дали следующее объяснение:
There is a vulnerability in implementations of regular expression evaluators and related methods that can cause the thread to hang when evaluating repeating and alternating overlapping of nested and repeated regex groups. This defect can be used to execute a Denial of Service (DoS) attack.
Не существует известных реализаций регулярных выражений, защищенных от этой уязвимости.
Как от этого избавиться?
Попробуйте построить строку перед ее отправкой в preg_match().
Вероятно, они не хотят, чтобы вы создавали регулярное выражение динамичный.
Не могли бы вы привести мне пример, поскольку я не понимаю, как это сделать.






Не следует использовать вводимые пользователем данные напрямую как часть регулярного выражения. Используйте preg_quote(), чтобы избежать его, чтобы он соответствовал ему буквально.
if (preg_match("/^attachment; filename=\"".preg_quote($_GET['get_part'], '/')."\"$/",$part['Content-Disposition']))
3 голоса за, но никто не заметил, что в PHP нет функции preg_escape.
when evaluating repeating and alternating overlapping of nested and repeated regex groupsАга, что бы с этой деталью потом$_GET['get_part']а?