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

时间:2012-02-11 16:08:49

标签: php

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

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

您可以在php.ini中列出所有已禁用的功能。您可以为每个vhost设置不同的

disable_functions = "exec,passthru"

共享主机与我上面说的一样。

可以考虑禁用的其他功能: readfile,fopen,fsockopen,popen,file_get_contents,include,stream_context_create,chmod,chown

可以找到完整列表here

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

答案 1 :(得分:3)

之前从未这样做,但我认为这种方法可以帮助您建立一个理智安全的环境。

如果您使用的是ubuntu(基于debian),我建议您创建一个jailed chroot。从链接

  

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

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

您可以使用“max_execution_time”,“disable_functions”,...等配置您的php.ini

这正是您实际需要的。

答案 2 :(得分:1)

我曾经使用PHP safe mode运行共享服务器,但显然现在已弃用。

更好的解决方案是在chroot jail中以不同的用户帐户运行每个用户的PHP进程,让操作系统担心安全性。用户将能够上传和运行任意代码,但只要它被正确地沙箱化,他们将无法做太多伤害。

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

对于数据库,只需使用单个数据库进行设置,只能访问自己的数据库,并且不授予他们创建更多权限的权限。