othersMap.put("maskedPan", Class.forName("Some Class"));
删除对动态类加载的使用.
规则
变更日志
类不应动态加载
动态加载的类可能包含由静态类初始化程序执行的恶意代码.即您甚至不必实例化或显式调用此类上的方法即可轻松受到攻击.
对于每次使用动态类加载,此规则都会引起一个问题.
不兼容的代码示例
String className = System.getProperty("messageClassName");
Class clazz = Class.forName(className); // Noncompliant
看到
最佳答案
一种选择是这样的:
Class<?> cls;
switch (System.getProperty("messageClassName")){
case "com.example.Message1":
cls = com.example.Message1.class;
break;
...
}