Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SecurityManager框架提供对资源的更好控制_Java_Securitymanager - Fatal编程技术网

Java SecurityManager框架提供对资源的更好控制

Java SecurityManager框架提供对资源的更好控制,java,securitymanager,Java,Securitymanager,我一直认为SecurityManager包含一个check方法,该方法在尝试使用method/Field.setAccessible时被调用,该方法包含一个权限,该权限包括包含类和成员名等的方法/字段的名称。显然,它不包含该权限,这是一个震惊 我有一个想法,可以通过使用重写尝试的类加载器来解决这个问题,例如 Method.setAccessible() 到 MethodHelper方法可以设置一个线程本地,我的安全管理器可以查看并清除该线程以获得实际的方法 这当然有一些潜在的缺陷,因为它需要

我一直认为SecurityManager包含一个check方法,该方法在尝试使用method/Field.setAccessible时被调用,该方法包含一个权限,该权限包括包含类和成员名等的方法/字段的名称。显然,它不包含该权限,这是一个震惊

我有一个想法,可以通过使用重写尝试的类加载器来解决这个问题,例如

Method.setAccessible() 

MethodHelper方法可以设置一个线程本地,我的安全管理器可以查看并清除该线程以获得实际的方法

这当然有一些潜在的缺陷,因为它需要重写类文件,这当然只能发生在非系统类上。 同样的方法也可以用于检索方法、字段等,这些方法、字段等现在确实可以使成员以任何形式提供给SecurityManager


是否有任何FOSS库打包了上述功能?

我不认为setAccessible是为任何类型的细粒度使用而设计的。它用于破坏防火墙以进行调试——从代码样式的角度来看,它当然不应该在普通代码中使用。您必须安装安全管理器以防止setAccessibletrue调用。请参阅:@Angel setAccessible的问题是SM不知道目标方法或字段。要么全力以赴,要么一事无成。唯一正确的方法是破解setAccessible,用方法/字段名调用权限。哦,我没有注意到。你能展示一些关于这个的代码吗?对不起,我可以浏览Java文档,但不能使用Java代码。如果你是对的,那么这是一个毫无意义的卑鄙概念。Sun通常不会犯这样的错误,但我必须承认我没有深入浏览安全管理器,我稍后在回家的火车上用笔记本电脑检查。看看AccessibleObject.setAccessible公共静态无效setAccessibleAccessibleObject[]数组,boolean标志抛出SecurityException{SecurityManager sm=System.getSecurityManager;if sm!=null sm.checkPermissionACCESS_PERMISSION;对于int i=0;iMethodHelper.setAccessible( Method );