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

use*_*479 5 java security scala

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

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

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

java.lang.System
java.lang.Runtime
java.io.*
java.nio.*
scala.io.*
java.net
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ter 3

可以通过提供策略文件来限制 JVM 运行时。不幸的是,Java 并不是完全可靠的,因此明智的做法是在操作系统级别限制运行 JVM 的帐户。

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

这个问题与你的问题非常接近。