Mass Assignment (массовое присваивание)

Автоматическое присваивание всех полей из запроса позволяет изменить защищённые атрибуты.

СигнатураMass Assignment

Mass Assignment возникает, когда фреймворк автоматически переносит все поля из запроса в объект модели. Если клиент добавит лишнее поле (например is_admin=true или balance=999), оно тоже запишется.

Как защититься: используйте белый список разрешённых к изменению полей, не передавайте сырой словарь запроса в модель, разделяйте схемы ввода и модели хранения.

# Опасно: переносим все поля из запроса
# user.update(**request.json)  # запишет и is_admin

# Безопасно: только разрешённые поля
ALLOWED = {"name", "bio"}
data = {k: v for k, v in request.json.items() if k in ALLOWED}
user.update(**data)
← Все записи: Веб-уязвимости и защита
Поддержать проект