反思用户生成的PHP代码

时间:2012-10-22 01:38:02

标签: php emulation eval

我正在开发一个测试用户PHP知识的应用程序。用户将输入代码并提交它,应用程序将检查它是否有错误。这不仅包括解析和运行时错误,还包括对问题的响应的适当性。

我能想到的最好方法是在用户代码上运行eval()并检查结果,即如果要求用户创建三个给定水果的数组,他输入:

$fruits = array (
'orange',
'banana'
);

我希望能够查看该数组并确定其大小不是3并在测验中提供反馈。

这是一个非常简单的例子,但这是一般的想法。

毋庸置疑,在表单上接受任意PHP代码并无条件运行eval()的想法纯粹是自杀,但它似乎比在文本上运行一堆正则表达式检查其有效性更有意义。 。那将是一个不完美的解决方案。

我想知道我能做些什么来真正收紧事情,这样人们就不会把恶意代码放在答案中。我注意到PHP安全模式现在已经灭绝,但是有什么类似的吗?我基本上只需要一个PHP模拟器。

1 个答案:

答案 0 :(得分:2)

我认为,PECL扩展runkit可以满足您的需求。