用户运行给定的程序

时间:2011-05-02 13:08:34

标签: java web-applications compiler-construction assembly byte

在这个question's答案中,有人可以找到许多网站(例如ideone),允许用户在线编写和运行程序。我有兴趣做类似的东西(虽然只针对Java代码),并且想知道如何做到这一点。

一个简单的想法是获取用户给定的代码,将其发送到服务器,编译它,运行它然后将输出发送回用户。但是如果用户有删除我的服务器文件等恶意代码怎么办?如果我想为C编程语言创建相同的东西,我想我可以只获取C文件的汇编代码,查看正在使用的系统调用,并确定给定的代码是否是恶意的。根据之前的想法,我应该在Java中查看程序创建的字节码吗?有没有更好/更简单的方法呢?

2 个答案:

答案 0 :(得分:3)

不要重新发明轮子,Java有SecurityManager机制来限制潜在的恶意代码

<强>参考

答案 1 :(得分:1)

除了肖恩·帕特里克·弗洛伊德(Sean Patrick Floyd)在他的回答中所说的,您还可以在操作系统上对该过程本身进行沙盒化处理。在主机(执行代码的机器)上创建一个新用户,并为其分配很少的权限(仅运行代码所需的权限)。以该用户身份运行该进程。

这样,无论安装管理器存在什么,生成的进程都无法造成任何伤害。