Files
transcriber/tasks/items/provider-code-out-of-storage-log.md
T

3.5 KiB

🐞 Убрать код провайдера из журнала запросов хранилища

  • Тип: fix
  • Категория: Очередь
  • Зачем: Строка запроса с кодом входа целиком уезжает в таблицу _logs и лежит там пять суток, хотя спека access требует, чтобы код в журнал не попадал.

Найдено ревью задачи oidc-login 2026-08-12, отчёт триажа — review/report.md, пункт срезанного потолком под номером 2.

Наш собственный журнал чист — код туда не пишет ни одна строка приложения. Пишет его слой хранилища: он логирует всякий запрос вместе со строкой запроса, а адрес возврата несёт код параметром. Тест на отсутствие значений в журнале этого не видит, потому что смотрит только в наш логгер.

Код провайдера одноразовый и живёт минуты, поэтому это не захват сессии, а расхождение написанного со сделанным: комментарий в коде и норма спеки утверждают, что код в журнал не идёт.

Воспроизведение

  1. Поднять сервис с настроенным провайдером.
  2. Пройти вход и вернуться на адрес возврата.
  3. Открыть журнал запросов хранилища — панель, GET /api/logs либо файл базы.
  4. В строке запроса и в поле url виден код провайдера целиком.

Затрагивает

  • адрес возврата GET /auth/callback и слой журналирования запросов хранилища;
  • настройка срока хранения журнала запросов (сегодня умолчание, пять суток);
  • дельта-спека access, требование «Значение, дающее доступ, не печатается» — либо норма выполняется, либо изъятие называется поимённо;
  • docs/security.md, перечень мест, где оседает чувствительное.

Критерии приёмки

  • После входа код провайдера не встречается в журнале запросов хранилища. Оракул — тест: пройти вход подставным провайдером, затем отобрать записи журнала и убедиться, что значения кода в них нет.
  • Строка о запросе к адресу возврата в журнале остаётся: пропажа самого следа не годится, прослеживаемость входа нужна. Оракул — тот же тест: запись о запросе есть, кода в ней нет.
  • Норма и код сошлись: либо спека выполняется буквально, либо в ней названо изъятие с ценой. Оракул — чтение требования против исхода первого теста.