Код 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
  1. Опишите разрешённые поля словарём роль → кортеж полей.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.