如何安全地运行不受信任的Java应用程序?

4
我正在编写一个自动评分的Web应用程序,它接受用户输入的程序。有哪些方法可以保护我的Web服务器免受恶意程序输入的攻击?
目前仅支持Java程序输入。我在考虑如何禁用对某些包/类的访问,但我不确定如何操作。
有任何想法/建议吗?
1个回答

7
最简单的保护系统免受恶意程序攻击的方法是在单独的虚拟机中运行该程序。如果你使用Linux系统,可以使用KVM等工具启动虚拟机,在其中运行程序,并将输出记录在某个地方(例如通过虚拟串口)。不要让该虚拟机连接网络,并在每次使用后清除其驱动器。
如果以上方法行不通,Java确实有一个广泛的安全和沙箱模型,最初是为隔离小应用程序而设计的。然而,这种方法的正确使用比较棘手,我不建议将其用于类似此类问题 - 启动虚拟机更加容易和安全。

你是在建议我每次运行程序都生成一个新的虚拟机吗?那似乎相当笨重和慢(虽然有效)。而且,将Web应用程序与这样的虚拟机进行接口设计似乎很困难(尽管我对虚拟化没有太多经验,所以可能会错)。理想情况下,我希望应用程序能够向用户提供即时反馈。 - tskuzzy
如果您保存了虚拟机的原始、预启动的 RAM 映像,实际上可以相当快地启动它。 - bdonlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接