Scala / Java Sandbox用于不受信任的代码

时间:2014-04-06 00:05:58

标签: java security scala

我想允许用户从浏览器客户端提交Java / Scala源代码并在服务器上编译/执行它。但是,与此同时,我想限制用户在服务器上运行潜在的恶意代码。

例如,我想阻止文件系统访问以及提交的源代码的入站/出站网络访问。我还应该限制什么?

我应该明确禁止哪些Java / Scala库用于客户端?例如,这是我的不允许的API /库列表:

java.lang.System
java.lang.Runtime
java.io.*
java.nio.*
scala.io.*
java.net

如何正确沙箱不受信任的Java / Scala代码?

1 个答案:

答案 0 :(得分:3)

可以通过提供policy file来限制JVM运行时。遗憾的是,Java不是万无一失的,因此在操作系统级别限制运行JVM的帐户是明智的。

如果您允许最终用户在您的服务器上编译scala代码,那么编译器可能会执行宏代码,这是一个额外的攻击面。 Scalac可能不是为防御恶意宏而设计的。 Scalac在JVM本身内运行,可以进行类似的沙盒化。

This question非常接近你。