2011-09-29 133 views
3

我有这样一个类:添加嵌入脚本到PHP页面

class Person { 
    function __construct($name) { 
     $this->name = $name; 
    } 
    function show() { 
     echo $this->name; 
    } 
} 

在我的PHP页面,我想有一个文本框,让我无论是在类型的自定义语言脚本或PHP脚本(不以某种安全漏洞),如:

PHP例子:在页面上

$me = new Person("Alexander"); 
    $me->show(); 

而看到输出与show()函数的结果。显然,我不希望人们编写恶意代码。这是如何完成的?我对这种编程没有任何经验。

问题域示例:

交互式“学习php”网站。用户可以输入php并查看结果,而无需设置自己的Web服务器。

“编写一个攻击脚本”游戏。用户对他们的车队AI进行编程并观察对抗计算机AI的战斗结果。

+0

我认为这更适合程序员。这个网站是关于具体的代码和具体问题。 – hakre

+1

为什么要重新发明轮子?有键盘,提琴手等等。对于这种事情。无论如何,如果你只是想学习一些东西,那么尝试一下,但是运气好的话,你最初的三角形/方形的尝试可以看起来更圆滑。 –

+0

键盘和提琴手不会帮助我添加嵌入式脚本到我的PHP程序。 –

回答

1

最简单的选择是运行沙盒虚拟服务器。您也可以尝试PHP sandbox,虽然看起来不够。

最终,最安全的方法是创建您自己的解释器,它们根本没有能够让恶意脚本执行任何破坏性任务的能力(即它们在现实世界中没有影响),这是一个可以填写书籍。解释器将代码转换为虚拟机可执行的格式,该虚拟机模拟您想要支持的任何系统功能并提供沙盒系统调用(尽管后者也可由您创建的解释器库提供)。将这个项目放在虚拟机上让您可以支持多种语言,而无需为每个语言创建一个执行程序。微软的CLIVES就是一个例子。

对于具有更多信息的书籍,基本上compilers/interpretersvirtual machines上的任何内容都与主要相关。有关VM的更多信息,另请参阅“Good literature about making a VM”,“Simple Interpreted Language Design & Implementation”。

+0

书不会吓到我。任何建议? –