有没有办法在PHP上安全地运行用户上传的页面?

时间:2011-10-27 20:35:20

标签: php

我想将文件(php站点/应用程序)上传到给定目录并在我的Web服务器中运行它们。但是,已经有一个简单的shell_exec调用会导致严重的后果。

我能想到的所有事情都是将页面目录设置在public_html之外并自动设置权限,以便运行该页面的用户在其之外没有任何权限。

到目前为止,我发现的其他平庸解决方案是runkit_sandbox,这看起来非常不安全,特别是因为它似乎被放弃了。

真的没办法吗?甚至没有完全shell访问(shell脚本)?

3 个答案:

答案 0 :(得分:2)

没有。用户上传的代码可以参与几乎无限数量的恶意行为,其中许多与合法行为非常相似(例如,发送邮件与发送垃圾邮件;访问外部API而不是执行DDoS;运行命令行实用程序与运行漏洞利用;管理文件与删除所有内容)。通常没有“罐头”方式来做到这一点,而且在PHP中肯定没有。

答案 1 :(得分:1)

答案 2 :(得分:0)

使用open_basedir将用户限制在某个文件夹中。通过这种方式,它可以用他的所有权执行他的文件,但是它将无法看到比他的文件夹更多的内容。

在这里查看更多信息:

http://www.randombugs.com/php/apache-dynamic-virtual-hosting-php-security.html

http://www.php.net/manual/en/ini.core.php#ini.open-basedir