2

尽管听起来很危险,但我希望用户能够在我的网站上创建自己的 PHP 程序。

我有什么办法可以编写代码,这样当用户发布他们的代码时,他们就不会删除或编辑已经存在的文件,也许是使用 RegExp?

谢谢

4

4 回答 4

2

看看 php.ini 指令disable_functions

于 2012-05-28T16:49:43.187 回答
2

除非您想简单地通过禁用功能php.ini(这会限制您自己的脚本,尤其是如果您允许用户上传和管理他们的 PHP 文件),那么任何类型的这种规模代码的审核脚本都将是可怕和复杂的。您至少需要监视所有创建的文件或操作,并取消对尚未创建的文件或操作的任何调用。

PHP 在解析 HTML 或 XML 之类的东西时遇到了很多麻烦,所以我会避免使用原始 PHP 来允许人们执行他们自己的脚本。

于 2012-05-28T16:50:54.563 回答
0

看到 PHP 中可用的功能数量,这使得安全地设置共享主机已经有些困难,实际上没有办法通过将某些语句列入黑名单来安全地允许用户执行此操作。

但是,如果您真的现在正在做的事情,则可以使用允许执行的函数的白名单。如果您真的想安全地做到这一点,您可以通过在非特权 PHP 解析器中运行代码并使用结果来实现这一点。以与您的网站相同的权限运行代码是不安全的。

于 2012-05-28T16:51:53.590 回答
0

如果您在服务器管理方面得心应手,您可能会想出一些办法。您可能想在服务器故障时问这个问题。我认为如果您将文件复制到具有正确权限的一个目录(可能是 550),它不会让脚本写任何东西,但我不太确定。

我的一个建议是将 set_time_limit() 添加到所有脚本的顶部以保持运行时间短。另外我会设置一个脚本,一次只允许执行这么多,这样你的服务器就不会被破坏。

于 2012-05-28T17:13:28.713 回答