Mass Assignment возникает, когда пользователь может передать поля, которые ему запрещено изменять. DTO и Pydantic помогают через явный allowlist, но не устраняют риск автоматически.
Что такое уязвимость Mass Assignment (over-posting) и как Pydantic/DTO полностью нивелируют этот риск?
Mass Assignment возникает, когда пользователь может передать поля, которые ему запрещено изменять. DTO и Pydantic помогают через явный allowlist, но не устраняют риск автоматически.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Mass Assignment возникает, когда пользователь может передать поля, которые ему запрещено изменять. DTO и Pydantic помогают через явный allowlist, но не устраняют риск автоматически.
Если входная модель разрешает is_admin, owner_id или служебный статус, корректная валидация типа не делает изменение допустимым. Нужны отдельные схемы для конкретных операций, запрет лишних полей по политике API и явное сопоставление с доменной моделью. Вложенные объекты тоже проверяют. Авторизация на объект и поле остаётся отдельной обязанностью сервиса. Не передавайте сырой request body в ORM-конструктор или массовый update; новые поля модели должны проходить осознанное включение в контракт.
Источник: cheatsheetseries.owasp.org.