В ответе API оказалось поле hashed_password: как оно туда попало
Аудит обнаружил, что ручка GET /users/{id} отдаёт клиенту в том числе hashed_password и внутренний флаг is_test_account.
В коде обработчик просто возвращает объект модели, полученный из базы, без описания схемы ответа.
В чём корень проблемы?
- Фронтенд не должен читать это поле — достаточно договориться с командой клиента и не показывать
- Нужно переименовать колонку в базе так, чтобы её назначение было неочевидно для читающего
- Ответ собирается из всех атрибутов объекта: наружу должна уходить отдельная схема ответа
- Достаточно дополнительно зашифровать значение в базе — тогда в ответе оно будет безопасным
