在服务器上执行外部Java源代码 - 限制安全性和资源?

ste*_*nos 9 java security

我正在考虑构建一个简单的在线服务,人们可以通过以源代码的形式将解决方案提交到我的服务器来解决编程练习,然后对其进行解释/编译和执行/测试.

通过使用Java VM,我可以提供对Java,Scala,Clojure,Ruby,Python和Javascript的支持.但是当我仔细考虑它时,恐怕我不知道如何限制脚本的资源和权限.

我的意思是它不应该

  • 写入磁盘
  • 创建超过X个线程
  • 运行超过X秒
  • 使用超过X MB的内存
  • 执行外部应用程序
  • 等等

如何将每个脚本放在沙箱中?

从我读过的内容来看,SecurityManager似乎无法完成所有这些......

jay*_*100 0

您已经描述了一个 JVM 端口,该端口类似于 google 应用引擎启用的白名单类。

这里有关于如何对 JVM 进行沙箱的精彩解释: How does google app engine sandbox work?