日期:2014-05-20  浏览次数:20929 次

关于java反射的安全问题
Java code

public class User {
    private String name;
    public User() {
        
    }
}



就这么一个类,name没有set方法,利用反射可以设值
Java code

  protected final void injectField(Object source, String fieldName, Object fieldValue) {
        try {
            Field field = source.getClass().getDeclaredField(fieldName);
            field.setAccessible(true);
            field.set(source, fieldValue);
        } catch (Exception e) {
            throw new IllegalStateException(e);
        }
    }



这样破坏了user的安全性了么?

------解决方案--------------------
是可以这么用
但是可以在jvm的启动参数里面禁止这个
安全性还是可以保障的