İçeriğe geç

Dinamik metot çağrımı (ARCH2132)

Anahtar python.security.dynamic-method-dispatch · Önem warning · Kategori security · CWE CWE-470

getattr ile çağrılacak metot adını kullanıcı girdisinden almak, saldırganın hiç amaçlanmamış metotları çağırmasına olanak tanır. Bu, beklenmedik davranış ve güvenlik kontrolünün atlanmasına yol açabilir.

def dispatch(self, request):
action = request.GET["action"]
return getattr(self, action)()
ALLOWED = {"list": "_list", "show": "_show"}
def dispatch(self, request):
action = request.GET["action"]
method = ALLOWED.get(action)
if method is None:
raise Http404
return getattr(self, method)()

Çağrılabilir metotları açık bir izin listesine bağlayın; ham kullanıcı girdisini doğrudan getattr’a vermeyin.