我正在开发一个允许用户使用PHP创建应用程序的平台。是否有允许用户这样做的安全方法?您是否可以限制使用可能会破坏现有源代码或服务器的功能?我只希望他们能够使用基本功能,并让他们访问1个数据库。这必须是可能的,因为许多用户都运行共享服务器。 ...
有什么建议吗?
答案 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,并考虑禁止网络连接(传入和传出)。
对于数据库,只需使用单个数据库进行设置,只能访问自己的数据库,并且不授予他们创建更多权限的权限。