有没有办法将一些 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/