java - 在正在运行的 JVM 的一个非常有限的部分执行 Java 字节码

标签 java jvm bytecode

有没有办法将一些 java 字节码运行到正在运行的 JVM 的一个特别受限的部分?我正在考虑访问非常小的 ram(也许几十千字节)并且无法访问外部世界(除了那个 ram)。

目标是将一些用户提供的字节码执行到这个安全的环境中,主机永远不会崩溃或从恶意字节码的执行中泄漏信息。

最佳答案

您可以在安全沙箱中运行不受信任的字节码,并设置沙箱,使其无法与外界通信。当您运行不受信任的小程序时,这就是驻留在浏览器中的 JVM 所做的……只是您需要更严格的沙箱限制。 (小程序沙箱不会阻止所有网络连接。)

引用:How do I create a Java sandbox?

但是,完全控制流氓代码的行为是不可能的。例如,如果它决定进入无限循环或分配一个巨大的数据结构,那么 JVM 的受信任部分没有阻止它的万无一失的方法。如果 JVM、类库或您的沙箱中存在安全漏洞,则流氓代码就有可能利用它。


请注意,所有这些都不涉及将代码限制在 RAM 的特定区域。你不能用 Java 做到这一点。

关于java - 在正在运行的 JVM 的一个非常有限的部分执行 Java 字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14188839/

相关文章:

java - 负数组大小异常 -1

java - Vaadin、Jetty、Spring Data、Maven - 异常

Java 字节码编译器基准测试

java - ADT 升级后,Google map View 不再加载;明显的身份验证问题?

java - 事件总线订阅问题(Otto - Guava 事件总线)

java - 如何计算Java数组的内存大小?

java - SSLHandshakeException : PKIX path building failed. 即使在我导入证书之后

python - 是否有 Eclipse 插件可以构建用于分发的 python 可执行文件?

java - 为什么 Java 类的编译与空行不同?

java - 如何编译Java字节码字符串?