如何动态编译和执行代码?

时间:2011-08-23 17:53:18

标签: php .net python c

有些网站(例如此one)允许用户以不同语言提交代码,系统会在其上编译和执行测试用例。作为开发人员,我很想知道他们是如何做到这一点的,他们如何支持多种语言(PHP,Python,C,.NET,javascript)?

提交的代码是否可能是恶意的,从而危及他们执行代码的环境?

感谢。

2 个答案:

答案 0 :(得分:3)

  

我很想知道他们是如何做到这一点的,他们如何支持多种语言(PHP,Python,C,.NET,javascript)?

简单:安装多个语言安装并为给定输入调用正确的安装(当然由用户提供)。

  

提交的代码是否可能是恶意的,从而危及他们执行代码的环境?

是的,当然。但是,有无数潜在的对策。以多年来开发的各种形式沙盒化过程,在给定时间后杀死该过程,防止访问潜在危险的功能等。请参阅Codepad's about page了解真实网站对此有何看法

答案 1 :(得分:0)

我无法代表该特定网站,但通常会创建一个受限制的环境,称为sandbox。在这种环境中,他们可以进一步限制在那里运行的程序的功能可用性。这也可以通过阻止语言中的某些API调用来完成。

* nix上的

Chroot是创建沙箱的一种方式。