在这个question's答案中,有人可以找到许多网站(例如ideone),允许用户在线编写和运行程序。我有兴趣做类似的东西(虽然只针对Java代码),并且想知道如何做到这一点。
一个简单的想法是获取用户给定的代码,将其发送到服务器,编译它,运行它然后将输出发送回用户。但是如果用户有删除我的服务器文件等恶意代码怎么办?如果我想为C编程语言创建相同的东西,我想我可以只获取C文件的汇编代码,查看正在使用的系统调用,并确定给定的代码是否是恶意的。根据之前的想法,我应该在Java中查看程序创建的字节码吗?有没有更好/更简单的方法呢?
答案 0 :(得分:3)
不要重新发明轮子,Java有SecurityManager
机制来限制潜在的恶意代码
<强>参考强>
答案 1 :(得分:1)
除了肖恩·帕特里克·弗洛伊德(Sean Patrick Floyd)在他的回答中所说的,您还可以在操作系统上对该过程本身进行沙盒化处理。在主机(执行代码的机器)上创建一个新用户,并为其分配很少的权限(仅运行代码所需的权限)。以该用户身份运行该进程。
这样,无论安装管理器存在什么,生成的进程都无法造成任何伤害。