2015-12-20 157 views
-1

有没有办法安全地运行用户提供的PHP脚本? 我想我必须禁用:我怎样才能沙箱PHP脚本?

  • 的fopen和所有其他文件相关的功能
  • Exec和其他的方式来执行命令
  • 卷曲
  • 邮件来防止垃圾邮件

是这样足够? 我如何禁用所有这些东西(仅限于该脚本,不适用于我的脚本)?

感谢您的帮助。

+0

可能重复[有没有办法在php中执行沙箱中的php代码](http://stackoverflow.com/questions/324726/is-there-a-way-to-execute-php -code-in-a-sandbox-from-within-php)以及许多其他 – JJJ

+0

@Juhana不,这个问题是关于一个环境沙箱,而我的是关于用户提供的脚本的安全沙箱。 – Zhigalin

回答

2

看一看Runkit_Sandbox:http://php.net/manual/en/runkit.sandbox.php

实例化Runkit_Sandbox类创建了它自己的范围和程序堆栈一个新的线程。使用传递给构造函数的一组选项,此环境可能被限制为主要解释器可以执行的一个子集,并为执行用户提供的代码提供更安全的环境。

+0

谢谢,您还可以建议我必须禁用的功能/类的列表,以防止与主机的任何交互? – Zhigalin

+0

请看看所有可能的安全攻击,然后禁用那些你不需要的功能。 http://php.net/manual/en/security.cgi-bin.attacks.php – Manikiran

+0

其实,在php中有一个完整的安全问题。 http://php.net/manual/en/security.php – Manikiran