Dinamik Metot Çağırma (ARCH4132)
Anahtar java.security.dynamic-method-dispatch · Önem warning · Kategori security · CWE CWE-470
Çağrılacak metot adını kullanıcı girdisinden alıp reflection ile çalıştırmak, hedeflenmeyen ve tehlikeli metotların tetiklenmesine olanak tanır. Çağrılabilir metotları bir izin listesiyle eşleyin.
Hatalı
Bölüm başlığı “Hatalı”Method m = service.getClass().getMethod(request.getParameter("action"));m.invoke(service); // kullanıcı herhangi bir metodu seçebilirMap<String, Runnable> actions = Map.of( "approve", service::approve, "reject", service::reject);Runnable action = actions.get(request.getParameter("action"));if (action == null) throw new IllegalArgumentException();action.run();Düzeltme
Bölüm başlığı “Düzeltme”Reflection ile kullanıcı kontrollü çağrı yerine, çağrılabilir eylemleri sabit bir izin listesiyle eşleyin.