2011-06-22 38 views
4

我正在写一个autograder web应用程序,它接受来自用户的程序作为输入。有什么方法可以保护我的Web服务器免受恶意程序输入的干扰?如何安全地运行不可信的Java应用程序?

目前只支持Java程序输入。我正在考虑禁止访问某些软件包/类,但我不知道如何。

任何意见/建议?

回答

7

防止恶意程序输入的最简单方法是简单地在单独的虚拟机中运行它。如果您使用的是Linux,请使用KVM或其他软件启动虚拟机,在该处运行该程序,并将输出记录在某处(例如通过虚拟串行端口)。让虚拟机无法访问网络并每次擦除其驱动器。

如果失败了,Java确实有一个广泛的安全和沙箱模型,最初是为隔离applet而设计的。然而,正确使用它很困难,我不推荐将它用于这样的事情 - 产生VM更容易和更安全。

+0

您是否建议每次运行程序时都生成新的VM?这似乎相当笨重和缓慢(尽管有效)。将Web应用程序与这种虚拟机连接似乎也很困难(尽管我没有太多的虚拟化经验,所以我可能会错误)。理想情况下,我希望应用程序向用户提供即时反馈。 – tskuzzy

+0

如果您保存虚拟机的原始预引导RAM图像,实际上可以很快启动它。 – bdonlan

相关问题