在另一个question上进行对话后,正在提出一个有趣的问题。
使用相应的安全性保护加载了安全管理器的类。此安全性可能会禁用反射(例如)。
问题是:是否可以通过sun.misc.unsafe破解安全管理器?如果是,怎么样?
修改
将SecuredClassLoader
更改为相关安全管理器。
答案 0 :(得分:2)
没有。 sun.misc.Unsafe
类需要访问检查,就像任何其他特权操作一样。您可以使用自定义类加载器或安全管理器来阻止它。这是一个简单的示例,其中一个空的安全管理器显示它将抛出AccessControlException
:
System.setSecurityManager(new SecurityManager());
Unsafe unsafe = Unsafe.getUnsafe();
答案 1 :(得分:1)
什么是“安全类加载器”? SecureClassLoader的?尽管它的名字,它并不安全。它所做的就是将类加载源限制为特定的代码位置。
因此,您甚至不需要任何不安全的操作来“破坏”它。例如,确保在SecureClassLoader获得控制之前,确保替换的被攻击类位于类路径中。
该线程中有人告诉过您 - 您无法在不安全的环境中拥有安全点。如果你的代码被部署到用户机器上,那么用户就是上帝,没有任何JVM安全可以帮助你,因为JVM是一个在更强大的本机事物之上的小层。