如何在受限沙箱中运行 java 代码(无网络、文件系统访问)

Posted

技术标签:

【中文标题】如何在受限沙箱中运行 java 代码(无网络、文件系统访问)【英文标题】:How to run java code in a restricted sandbox (without network, filesystem access) 【发布时间】:2012-02-08 11:32:21 【问题描述】:

假设某个程序员给了我一个可执行的 jar(来自 Java 代码)以及要使用的入口点。我想在没有网络或文件系统访问或数据库访问以及固定数量的 CPU 和内存的受限沙盒环境中从 Java 代码(以编程方式)运行这个 jar。即,Java 代码不应对我的 jvm 上运行的其他程序造成任何副作用。

理想情况下,我希望根据情况允许某些访问(例如,仅允许某个目录中具有配额的文件)。

【问题讨论】:

你读过这个吗? ***.com/questions/2867747/… 【参考方案1】:

您可以使用策略文件控制环境 http://docs.oracle.com/javase/1.4.2/docs/guide/security/PolicyFiles.html#Examples (archived version @archive.org)

你可以运行然后运行你的 jar

java -Djava.security.manager -Djava.security.policy=/path/your_policy_file.policy -jar

【讨论】:

那么是否可以执行以下操作:以完全访问权限运行我的程序,然后以限制的方式以编程方式加载 jar【参考方案2】:

此页面详细描述了该过程:

http://www.jayway.com/2014/06/13/sandboxing-plugins-in-java/

【讨论】:

以上是关于如何在受限沙箱中运行 java 代码(无网络、文件系统访问)的主要内容,如果未能解决你的问题,请参考以下文章

Chrome浏览器远程代码执行漏洞(无沙箱模式)

Chrome浏览器远程代码执行漏洞(无沙箱模式)

Chrome浏览器远程代码执行漏洞(无沙箱模式)

网络连接中ipv6受限是啥意思?

如何在沙箱中使用 Rhino for Java 运行 Javascript?

如何创建 Java 沙箱?