沙盒用户的PHP代码

时间:2010-07-23 07:19:18

标签: php security sandbox

我想限制用户有权访问的PHP功能。

例如,有一个对象$data,用户喜欢使用if forecho

显然允许他编写PHP将是一个严重的漏洞。

有没有办法在沙盒中运行这个PHP,或者你会推荐任何轻量级的PHP模板引擎吗?

6 个答案:

答案 0 :(得分:8)

如果您没有自己的服务器,则可能没有runkit。但你所拥有的(可能)是Tokenizer!使用Tokenizer,您可以查看给定的源代码并在发现无效令牌时中止。 Here an example how to validate an array using this。你可以为你的目的做同样的事情。 PHP文档有a list of tokens。如果您需要帮助决定允许或禁止哪些令牌,请说明。

€dit:显然我也建议使用Twig。它真是太棒了 - 而且还有沙盒!

答案 1 :(得分:4)

答案 2 :(得分:4)

答案 3 :(得分:2)

试过Smarty? http://www.smarty.net/

答案 4 :(得分:1)

PECL runkit extension确实提供了沙盒,但对于你想做的事情可能有点过分

答案 5 :(得分:1)

PHP Fat-Free Framework有一个模板引擎,禁止使用PHP代码,并允许您定义哪些函数可以在HTML模板中使用。

还有一个真正的沙盒功能,它使函数和包含文件独立于其他文件,即一个包含文件中的变量/函数不为其他人所知,因此您可以使用与另一个包含文件具有相同名称的函数。这可能对(功能失调的)开发团队有用。