Web服务中的代码解释器

时间:2011-04-21 03:35:17

标签: python web-applications interpreter

我想在服务器端的客户端上构建一个带有沙盒解释器(或编译器)的网站,这可以占用很短的代码块(python / java / c / c ++任何常用语言都可以)作为输入并执行它。

我想要构建的是一个给定编程问题的地方,用户可以输入解决方案,我们可以通过一些测试用例运行它,批准解决方案或提供一个测试用例,它会中断。

寻找指向图书馆,现有实施或一般概念的指针。 任何帮助非常感谢。

3 个答案:

答案 0 :(得分:2)

有许多比赛网站做这样的事情--TopCoder和Timus Online Judge是两个例子。但是,他们没有太多关于该技术的信息。

codepad.org最接近您想要做的事情。他们在大量沙盒和防火墙的EC2服务器上运行程序,这些服务器会定期擦除,以防止漏洞利用。

键盘至少部分基于geordi,这是一个旨在运行任意C ++程序的IRC机器人。它使用Haskell和陷阱系统调用来防止有害活动。

稍微不那么感兴趣,Google App Engine的一个示例项目是Python shell。它依赖于GAE的服务器端沙箱来防止恶意活动。


就界面而言,最简单的方法是做国际信息学奥林匹克运动会。让人们用目标语言编写具有特定名称的函数,然后从测试框架中调用它。如果需要,可以使用简单的函数让它们从框架中请求信息。

答案 1 :(得分:2)

对于Python,您可以编译PyPy in sandboxed mode,它为您提供完整的解释器和完整的标准库,但无法执行任意系统调用。您还可以限制已执行脚本的运行时和堆大小。

Here's some code我写了一段时间,在pypy-sandbox二进制文件中执行包含Python脚本的任意字符串并返回输出。您可以从常规CPython中调用此代码。

答案 2 :(得分:0)

查看论文An Enticing Environment for Programming,其中讨论了构建这样一个环境。