• java如何禁掉反射


    SecurityManager

    有一个checkMemberAccess这个方法可以阻止利用反射;
    如:

    SecurityManager sm = new SecurityManager();
    sm.checkMemberAccess(Test.class, Member.PUBLIC);

    前面一个为CLASS,后面需要填一个INT值,Member.PUBLIC 代表可以访问,
    如果是PUBLIC,反射可以执行,DECLARED,反射运行时,会报错。

    SecurityManager另外一个例子:
    package com.jd.basic.pk.manager;
    
    import java.lang.reflect.Field;
    import java.security.Permission;
    
    public class UseReflection {
        static {
            try {
                System.setSecurityManager(new MySecurityManager());
            } catch (SecurityException se) {
                System.out.println("SecurityManager already set!");
            }
    
        }
    
        public static void main(String args[]) {
            Object prey = new Prey();
            try {
                Field pf = prey.getClass().getDeclaredField("privateString");
                pf.setAccessible(true);
                pf.set(prey, "Aminur test");
                System.out.println(pf.get(prey));
            } catch (Exception e) {
                System.err.println("Caught exception " + e.toString());
            }
    
        }
    }
    
    class Prey {
        @SuppressWarnings("unused")
        private String privateString = "privateValue";
    }
    
    class MySecurityManager extends SecurityManager {
        public void checkPermission(Permission perm) {
            if (perm.getName().equals("suppressAccessChecks")) {
                throw new SecurityException("Can not change the permission dude.!");
            }
        }
    }

    参考:http://bbs.csdn.net/topics/390472034

  • 相关阅读:
    Java图片裁剪
    jvm参数
    Druid数据源监控配置
    执行jar包或执行其中的某个类
    十进制和二进制之间的相互转化
    Java位运算
    获取网络资源保存本地
    前端PHP入门-010-内部函数
    前端PHP入门-011-可变函数
    前端PHP入门-009-匿名函数
  • 原文地址:https://www.cnblogs.com/olmlo/p/5488432.html
Copyright © 2020-2023  润新知