Processmaker 3.* Проблема обхода пути

У меня Processmaker 3.1.3 работает на сервере RHEL-7. Но недавно я обнаружил, что сервер уязвим при атаке обхода пути. Все приложение выполняется через файлApp.php в $App_Dir/workflow/public_htmlкаталог, обрабатывающий перенаправление URL-адресов и другие операции. В настоящее время я использую этот фрагмент кода, чтобы предотвратить проблему в верхней частиApp.php расположен в $App_Dir/workflow/public_html.

<?php
 $url = $_SERVER['REQUEST_URI'];  
 $key = "../";  
   if (strpos($url, $key) == true) {   
     die("Forbiden");  
   }
?>

Но я считаю, что это не идеальное решение. Приложение может зависнуть в любой момент. Любая рекомендация / решение?

TIA

1 ответ

Этого недостаточно, потому что URL-адрес может быть закодирован во многих форматах для "../". Для решения проблемы вам необходимо принудительно выполнить проверку ввода.

  1. Вы должны использовать функцию, которая будет работать с реальным путем (https://www.php.net/manual/en/function.realpath.php), чтобы получить путь к вашему файлу.
  2. После этого вам следует проверить путь результата на соответствие вашим бизнес-правилам. Список разрешенных путей должен быть составлен с использованием подхода с использованием белого списка (вы должны указать весь каталог, который вы хотите), а не с использованием метода черного списка (тот, который вы указываете в своем коде).
Другие вопросы по тегам