我正在用 PHP 和 Javascript 开发一个应用程序,我需要为给定用户设置磁盘配额(因为我使用 FTP 守护进程(在本例中为 ProFTPd)以允许用户拥有自己的文档管理器)这样 elFinder(我目前正在考虑使用的文档管理器)可以“自由”运行(而不必创建我自己的 PHP 函数来控制实际使用的空间量)。
这个想法是运行单个命令来调整服务器端的磁盘配额,但是......让 PHP 运行系统命令是否安全(即使我不打算接受参数或允许任何类型的命令)用户与系统的交互)?
最佳答案
通常不安全。如果您允许用户发送命令或任何其他类型的交互,这并不重要。即使您的脚本单独运行,也可以发明漏洞以一种或另一种形式利用它,并可能改变它的操作。
但是,这只适用于您希望在服务器上拥有疯狂的安全规则的情况。在现实世界中,损害服务器安全的可能性很小。
我还有一些建议给你:
确保您的脚本不接受任何来自外部的输入,它不读取数据库或文件。所有内容都必须包含在脚本内。
尝试将脚本放在 documentRoot 之外的某个位置,这样用户就无法访问它。
对脚本设置一些特殊权限,以便其操作仅限于其运行的用户。即使有人以某种方式破坏了它,操作系统也不会让他做其他事情,除了在特定环境中运行该特定命令。
这当然可以用更多规则来完成,但这只是现在想到的。希望对您有帮助
关于php - 使用 PHP exec() 处理服务器上与系统相关的任务是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7609682/