2

我正在用 PHP 和 Javascript 开发一个应用程序,我需要为给定用户设置磁盘配额(因​​为我正在使用 FTP 守护程序(在本例中为 ProFTPd)以允许用户拥有自己的文档管理器)所以 elFinder (这是我目前正在考虑使用的文档管理器)可以“自由”运行(而不必创建我自己的 PHP 函数来控制实际使用了多少空间)。

这个想法是运行一个命令来调整服务器端的磁盘配额,但是......让 PHP 运行系统命令是否安全(即使我不打算接受参数或允许任何类型的用户交互)系统)?

4

3 回答 3

3

通常是不安全的。如果您让用户发送命令或任何其他类型的交互,这并不重要。即使您的脚本单独运行,也可以发明漏洞利用它以一种或另一种形式使用它,并可能改变它的操作。

但是,这只适用于你想在你的服务器上拥有疯狂的安全规则。在现实世界中,危害服务器安全的可能性很小。

我仍然有一些建议给你:

  1. 确保您的脚本不接受来自外部的任何输入,它不读取数据库或文件。一切都必须包含在脚本中。

  2. 尝试将脚本放在 documentRoot 之外的某个位置,这样用户就无法访问它。

  3. 对脚本设置一些特殊权限,以便它的操作仅限于它运行的用户。即使有人以某种方式破坏了它,操作系统也不会让他做其他事情,而只能在特定环境中运行该特定命令。

这当然可以通过更多规则来完成,但这只是现在想到的。希望能帮助到你

于 2011-09-30T11:43:08.187 回答
2

让用户输入信息是不安全的;POST 或 GET 值而不过滤。

如果您必须使用用户输入的 GET 值,您应该使用escapeshellarg()or escapeshellcmd()

于 2011-09-30T11:33:46.953 回答
0

只要您没有得到任何用户输入并且对于要运行的命令,使用它就像从命令行执行它一样安全exec()。如果您要在命令中使用用户输入,请使用escapeshellarg()or escapeshellcmd(),它应该仍然是安全的。

于 2011-09-30T11:35:25.500 回答