如何绕过accessDeclaredMembers作为applet的权限?

时间:2012-09-06 14:20:37

标签: java security reflection applet greenfoot

我使用了另一个问题的一些代码来访问Java ClassLoader中的私有字段“classes”。这工作正常,但是当我将它移动到applet时,它会被这个异常搞乱:access denied (java.lang.RuntimePermission accessDeclaredMembers)。我做了一些搜索并尝试使用PrivlegedExceptionAction跳过它,但它无法正常工作。所以我的问题是:有可能绕过这个,如果没有,那么获取类列表的另一种方法是什么?

反思代码:

final ClassLoader cLoader = getClass().getClassLoader();
            final Field f = ClassLoader.class.getDeclaredField("classes");
            AccessController.doPrivileged(new PrivilegedExceptionAction() {
                    public Object run() throws Exception {
                        f.setAccessible(true);
                        return null;}});
            Vector<Class> classes = (Vector<Class>)f.get(cLoader);
            cList.addAll(classes);

1 个答案:

答案 0 :(得分:2)

对applet代码进行数字签名(然后让用户在出现提示时接受它)以获得完全权限。