我一直认为 SecurityManagers 包含一个检查方法,该方法在尝试 Method/Field.setAccessible() 时调用,其中包含一个权限,其中包括方法/字段封闭类的名称和成员名称等。显然它没有,这令人震惊.
我有一个想法,可以通过使用重写尝试的 ClassLoader 来解决这个问题,例如
Method.setAccessible()
至
MethodHelper.setAccessible( Method );
MethodHelper 方法可以设置一个本地线程,我的安全经理查看并清除该线程以获取实际的方法。
- 这当然有一些潜在的缺陷,因为它需要重写类文件,这当然只能发生在非系统类中。
可以采用相同的方法来检索方法、字段等,如今这些方法、字段等确实使成员可以以任何形式对 SecurityManager 可用。
是否有任何 FOSS 库包含上述功能?