Tenir compte de cette classe d'échantillons,Accès méthodes statiques privées d'un contexte public static
class TargetClass {
private static String SENSITIVE_DATA = "sw0rdfish";
private static String getSensitiveData() {
return SENSITIVE_DATA;
}
}
Quand je fais cela,
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);
}
}
La sortie est,
Sensitive Data: sw0rdfish
Ceci est dangereux . Comment puis-je empêcher cela?
En n'utilisant pas la réflexion? –
Oui, bien sûr, si les programmeurs pensent uniformément de cette façon – Joset