由用户运行给定程序

问题描述 投票:0回答:2

在这个问题的答案中,人们可以找到许多允许用户在线编写和运行程序的网站(如ideone)。我有兴趣制作类似的东西(尽管仅适用于 Java 代码),并且想知道如何做到这一点。

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

java assembly web-applications byte
2个回答
3
投票

不要重新发明轮子,Java有

SecurityManager
机制来限制潜在的恶意代码

参考

  • Java 的 安全追踪 教程
  • Java™ SE 6 中的权限 开发套件(JDK)

1
投票
除了肖恩·帕特里克·弗洛伊德(Sean Patrick Floyd)在回答中所说的之外,您还可以在操作系统上沙箱进程本身作为附加措施。 在您的主机(执行代码的计算机)上创建一个新用户,并为其分配很少的权限(仅限运行代码所需的权限)。 以该用户身份运行该进程。

这样,无论 SecurityManager 是否存在,生成的进程都不会损害任何东西。

© www.soinside.com 2019 - 2024. All rights reserved.