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