İçeriğe geç

Toplu atama (ARCH2129)

Anahtar python.security.mass-assignment · Önem warning · Kategori security · CWE CWE-915

Tüm istek gövdesini doğrudan bir ORM modeline atamak, saldırganın is_admin gibi korunması gereken alanları da ayarlamasına olanak tanır. Yalnızca beklenen alanlar bir izin listesiyle kabul edilmelidir.

def update_profile(request):
user = User.objects.get(pk=request.user.id)
for key, value in request.POST.items():
setattr(user, key, value)
user.save()
ALLOWED = {"display_name", "bio", "avatar_url"}
def update_profile(request):
user = User.objects.get(pk=request.user.id)
for key in ALLOWED & request.POST.keys():
setattr(user, key, request.POST[key])
user.save()

Güncellenebilecek alanları açık bir izin listesine sınırlayın; istek gövdesini doğrudan modele bağlamayın.