使用PHP exec()在服务器上处理与系统相关的任务是否安全?
我正在用PHP和Javascript开发一个应用程序,我需要为给定的用户设置磁盘配额(因为我使用FTP守护进程(本例中为ProFTPd)允许用户拥有自己的文档管理器),以便elFinder(我目前正在考虑使用的文档管理器)可以“自由”运行(无需创建自己的PHP函数来控制实际使用的空间)使用PHP exec()在服务器上处理与系统相关的任务是否安全?,php,ftp,exec,quota,Php,Ftp,Exec,Quota,我正在用PHP和Javascript开发一个应用程序,我需要为给定的用户设置磁盘配额(因为我使用FTP守护进程(本例中为ProFTPd)允许用户拥有自己的文档管理器),以便elFinder(我目前正在考虑使用的文档管理器)可以“自由”运行(无需创建自己的PHP函数来控制实际使用的空间) 我们的想法是运行一个命令来调整服务器端的磁盘配额,但是…让PHP运行系统命令安全吗(即使我不接受参数或不允许任何类型的用户与系统交互)?如果让用户输入信息;发布或获取值而不进行过滤,这是不安全的 如果必须使用用户
我们的想法是运行一个命令来调整服务器端的磁盘配额,但是…让PHP运行系统命令安全吗(即使我不接受参数或不允许任何类型的用户与系统交互)?如果让用户输入信息;发布或获取值而不进行过滤,这是不安全的 如果必须使用用户输入的GET值,则应使用
escapeshellarg()
或escapeshellcmd()
exec()同样安全
就像从命令行执行一样。如果要在命令中使用用户输入,请使用或,它应该仍然是安全的。通常是不安全的。是否允许用户发送命令或任何其他类型的交互并不重要。即使脚本单独运行,也可以发明利用漏洞以某种形式使用它也许会改变它的行为
但是,只有当你想在你的服务器上有疯狂的安全规则时,这才适用。在现实世界中,你破坏服务器安全的可能性很小
我仍然有一些建议给你:
当然,这可能需要更多的规则来完成,但这正是我们现在想到的。希望它对第3点有所帮助您如何正确地做到这一点?请您详细说明一下?@Jimbo chown X:Y script.php。这很简单。最好的方法是以CLI而不是从Web服务器运行php脚本。然后您可以制定一个cron规则来运行it。脚本的所有者需要有权限来调整配额,但仅此而已。第3点背后的想法是,经常会将脚本编辑为root(因此所有者是root),然后将chmod 777放在上面,这样每个人都可以编辑它。我不会用
chmod 777
将其公开。