有没有一种安全的方式允许用户将自己的PHP添加到我的服务器中


Is there a safe way of allowing users to add their own PHP to my server?

我正在开发一个平台,允许用户使用PHP创建应用程序。有什么安全的方法允许用户这样做吗?你能限制使用可能损坏现有源代码或服务器的函数吗?我只希望他们能够使用基本功能,并允许他们访问1个数据库。这必须是可能的,因为存在由许多用户运行的共享服务器。…

有什么建议吗?

您可以在php.ini中列出所有禁用的函数。您可以对每个vhost进行不同的设置

disable_functions = "exec,passthru"

共享主机只是做了和我上面说的一样的事情。

其他可被视为恶魔的功能:readfile、fopen、fsockopen、popen、file_get_contents、include、stream_context_create、chmod、chown

完整的列表可以在这里找到

但是,如果您在代码中也使用这些函数,最好使所有代码文件对apache用户或所有人都是只读的,在这种情况下,chown和chmod禁用起到了很大的作用。

以前从未这样做过,但我认为这种方法可以帮助您获得一个健全和安全的环境。

如果你在ubuntu(基于debian)上,我建议你创建一个被监禁的chroot。从链接

chroot基本上是计算机上的一个特殊目录阻止应用程序(如果从该目录中运行)访问目录外的文件。在很多方面,chroot就像在现有操作系统中安装另一个操作系统系统

您还必须安装一个专用的PHP实例,该实例必须由从chroot目录内部运行的应用程序使用。

您可以使用"max_execution_time"、"disable_functions"等配置php.ini。。。etc

这正是你真正需要的。

我曾经使用PHP安全模式运行共享服务器,但现在显然不推荐使用它。

一个更好的解决方案是在chroot监狱中,在不同的用户帐户下运行每个用户的PHP进程,并让操作系统担心安全性。用户可以上传和运行任意代码,但只要它是正确的沙盒,他们就不会造成太大的伤害。

您还可以使用磁盘配额。对每个用户的内存使用情况使用ulimits,并考虑禁止网络连接(传入和传出)。

对于数据库,只需为它们设置一个单独的数据库,只能访问它们自己的数据库,并且不授予它们创建更多数据库的权限。