İçeriğe geç

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.

Method m = service.getClass().getMethod(request.getParameter("action"));
m.invoke(service); // kullanıcı herhangi bir metodu seçebilir
Map<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();

Reflection ile kullanıcı kontrollü çağrı yerine, çağrılabilir eylemleri sabit bir izin listesiyle eşleyin.