Код Junior Авторизация: IDOR, RBAC, ABAC обновлено
Защита от mass assignment
Условие
Напишите pick_fields(body, role), которая оставляет в теле запроса на обновление профиля только поля, разрешённые роли:
user:name,avatar,bio;admin:name,avatar,bio,role,plan.
Для неизвестной роли верните пустой словарь. Порядок ключей в результате как в body.
Примеры
pick_fields({"name":"Анна","role":"admin"}, "user") // {"name":"Анна"}
pick_fields({"name":"Анна","role":"admin"}, "admin") // {"name":"Анна","role":"admin"}
pick_fields({"balance":1000000,"is_verified":true}, "user") // {}
Как подойти
Подсказки: 1
- Опишите разрешённые поля словарём роль → кортеж полей.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.