set*_*ora 4 java security oop constraints
考虑这个示例类,
class TargetClass {
    private static String SENSITIVE_DATA = "sw0rdfish";
    private static String getSensitiveData() {
        return SENSITIVE_DATA;
    }
}
当我这样做时,
import java.lang.reflect.Method;
public class ClassPiercing {
    public static void main(String... args) throws Exception {
        Class targetClass = Class.forName("TargetClass");
        Method[] methods = targetClass.getDeclaredMethods();
        methods[0].setAccessible(true);
        String sensitiveData = (String)methods[0].invoke(null, null);
        System.out.println("Sensitive Data: " + sensitiveData);
    }
}
输出是,
Sensitive Data: sw0rdfish
这很危险.我该如何防止这种情况发生?
好吧,使用SecurityManager.
http://java.sun.com/javase/6/docs/api/java/lang/SecurityManager.html
http://java.sun.com/javase/6/docs/technotes/guides/security/permissions.html#ReflectPermission
禁用ReflectPermission应该可以解决问题.
| 归档时间: | 
 | 
| 查看次数: | 385 次 | 
| 最近记录: |