安全地为其他人提供PHP服务

And*_*sen 1 php linux apache security amazon-ec2

我有一个亚马逊ec2实例(Linux).

我希望你(是的,你)能够上传一个PHP文件,然后在www.mydomain.com/yourname上实时提供.我也希望能够为众多其他人(www.mydomain.com/theirname)做到这一点.

我担心你(或他们,不要指责)可以做恶意的事情(故意或偶然).例如,无限循环,在一个根目录之外读/写,关闭服务器,运行系统命令等.如果我想要恶意,我会尝试.

有没有办法设置PHP/apache/user权限,或者在服务之前搜索他们的代码,这样恶意至少会更难,更难?

Web*_*net 8

除此之外,你肯定想调整你的PHP.ini包含这个:

disable_functions =exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
Run Code Online (Sandbox Code Playgroud)

这将阻止在使用此.ini的任何PHP文件中执行这些功能

我还将启用open_basedir支持将用户锁定在他们自己的目录中,这样他们就不能使用以下内容:

require_once '../../another_user/index.php';

要么

$notMyFile = file_get_contents('../../another_user/config.php');


Dha*_*dya 5

这样做没有防弹方法.

首先,没有系统调用.

其次,每个脚本超时.

并且,您可能还想在手中保留一个外部"退出按钮",以便在发现出现问题时可以拔出插头.

PHP是一种非常大的语言,让其他人在您的服务器上运行代码是一件非常困难的事情.

  • 这就是为什么您应该只为每个用户/脚本分配一个单独的VM,并在完成后销毁VM. (3认同)
  • 我仍然可以将虚拟机打死,并将你的使用量提高一吨,以便EC2账单能够杀死你. (2认同)