Mass Assignment (массовое присваивание)
Автоматическое присваивание всех полей из запроса позволяет изменить защищённые атрибуты.
Сигнатура
Mass AssignmentMass 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)