2009-11-18 55 views
0

据我所知,Java可以加载/执行DLL代码,但我想知道是否有任何安全检查来防止JVM调用系统中的不可信代码。难道这不会破坏系统 - 有没有任何操作系统功能可以防止这种情况发生?或者有人可以用Java自己写一些防止不可信代码被加载的方法?谢谢你的帮助。Java DLL安全常见问题

回答

3

不可以。一旦你通过JNI调用本地代码,那么本地代码可以自由地执行任何操作(取决于操作系统本身的许可)。没有沙箱从JVM调用的本地代码的概念。

请注意,这是一个特别令人头疼的JNI代码。严重编码的本地代码可能会取消JVM(而不是简单地抛出一个异常),而后续的调试/解析特别困难。

+0

感谢您的回答! – ash 2009-11-18 22:12:49

1

本机代码的加载本身可以被阻止。通常例如小程序运行这样的安全上下文,他们无法加载本地库。但是,如果JVM允许您的Java代码调用不可信的本机代码,则所有投注都将关闭。

+0

谢谢,这很有道理。 – ash 2009-11-18 22:13:26