我有一个这样的类:
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的战斗结果。
发布于 2011-09-30 02:44:28
最简单的选择是运行沙箱虚拟服务器。您也可以尝试PHP sandbox,尽管它看起来还不够。
归根结底,最安全的方法是创建自己的解释器,这些解释器根本没有让恶意脚本执行任何破坏性任务的能力(即它们在现实世界中没有任何影响),这是一个可以充斥书籍的主题。解释器将代码转换为可由VM执行的格式,VM模拟您希望支持的任何系统功能,并提供沙箱系统调用(尽管后者也可以由您创建的解释器库提供)。基于VM的项目允许您支持多种语言,而不必为每种语言创建一个执行器。微软的CLI和VES就是一个例子。
当涉及到包含更多信息的书籍时,基本上compilers/interpreters和virtual machines上的任何内容都是主要相关的。有关VM的更多信息,请参阅"Good literature about making a VM“、"Simple Interpreted Language Design & Implementation”。
https://stackoverflow.com/questions/7600844
复制相似问题