如何扩展类java.security.SecureClassLoader?
我想写我自己的类加载器。作为小程序的默认类加载器,它应该更快、更动态 但我不知道该如何实现该方法:如何扩展类java.security.SecureClassLoader?,java,security,classloader,Java,Security,Classloader,我想写我自己的类加载器。作为小程序的默认类加载器,它应该更快、更动态 但我不知道该如何实现该方法: PermissionCollection getPermissions( CodeSource codesource ) 如果CodeSource中有有效的证书,超级实现也不授予任何权限 我必须自己验证证书还是它已经从Java VM验证并从用户处接受了证书?Sun插件和WebStart覆盖getPermissions以检查签名,并与用户一起检查他们是否希望接受证书。这是一个实现细节,将来可能会更
PermissionCollection getPermissions( CodeSource codesource )
如果CodeSource中有有效的证书,超级实现也不授予任何权限
我必须自己验证证书还是它已经从Java VM验证并从用户处接受了证书?Sun插件和WebStart覆盖
getPermissions
以检查签名,并与用户一起检查他们是否希望接受证书。这是一个实现细节,将来可能会更改。如果我错了,请纠正我-我认为您需要的是在小程序初始化过程中的某个地方创建一个类加载器,然后使用该加载器加载后续类。如果是,则小程序将已被授予所有权限,因为它已被签名(并且用户已单击浏览器警告)。您的getPermissions方法可以如下所示
PermissionCollection p = new Permissions();
p.add(new AllPermission());
return p;
是和否。带有类加载器的jar文件已被接受并拥有所有权限。这对其他jar文件无效。这些文件可以被操纵。这将是一个安全漏洞,可以在不检查的情况下接受all。没错,但是自定义类加载器本身就在受信任的jar中,因此如果它被授予了所有权限,从逻辑上讲,这些权限应该“流向”它加载的类。但我明白你的意思-只有通过破解JRE插件本身,才能操纵这些文件。比如,将这些类的恶意版本放入父加载程序(即插件加载程序)中。但这也意味着客户端机器受到了破坏。当你说这是一个实现细节时,你说的是围绕
SecureClassLoader
实例的Sun插件和Webstart行为,而不是getPermissions
方法本身,不是吗?