0

我将 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

4

1 回答 1

0

这还不够,因为 URL 可以以多种格式编码为“../”。您需要强制执行输入验证以解决您的问题。

  1. 您应该使用将与实际路径 ( https://www.php.net/manual/en/function.realpath.php ) 一起使用的函数来获取文件的路径。
  2. 之后,您应该根据您的业务规则验证结果路径。允许的路径列表应该以白名单方法(您应该列出所需的所有目录)而不是黑名单方法(您在代码中显示的方法)完成。
于 2019-09-26T14:06:19.043 回答