我知道Java可以加载/执行DLL代码,但我想知道是否有任何安全检查来防止JVM调用系统中的不受信任的代码。这不能破坏系统 - 是否有任何操作系统功能可以阻止这种情况?或者有人可以用Java编写一些防止不受信任的代码加载的方法吗?谢谢你的帮助。
答案 0 :(得分:3)
没有。一旦你调出本机代码(通过JNI),那么该本机代码可以自由地做任何事情(取决于操作系统本身给予的许可)。没有沙盒化从JVM调用的本机代码的概念。
请注意,这是JNI代码特别令人头痛的问题。编码不良的本机代码可以取消JVM(而不是简单地抛出异常),因此调试/解决方案特别困难。
答案 1 :(得分:1)
本机代码的加载本身可以被阻止。通常例如applet运行这样的安全上下文,他们无法加载本机库。但是,如果JVM允许您的Java代码调用不受信任的本机代码,则所有投注都将关闭。