[P2] admin.py: текст исключений утекает в HTTP-ответы (8 мест detail=f"...: {e}") #2234

Closed
opened 2026-07-02 21:32:01 +00:00 by lekss361 · 0 comments
Owner

Из аудита 2026-07-02 (Фаза 4, verified на main 2026-07-03).

Находка: tradein-mvp/backend/app/api/v1/admin.py:551,557,580,586,629,669,672,679HTTPException(detail=f"fetch failed: {e}") и аналоги отдают сырой текст исключения в HTTP. Исключения psycopg/httpx могут содержать DSN-фрагменты, внутренние хосты, пути. Роуты admin-gated, но defense-in-depth (особенно пока секрет #2213 не запровижинен).

Acceptance:

  • В HTTP — generic-сообщение + короткий error-id; полный текст — только в logger.exception (→ GlitchTip).
  • Единый хелпер вместо 8 копий.
  • Тест: исключение с «секретным» текстом не появляется в теле ответа.

Scope: tradein-mvp/backend/app/api/v1/admin.py.

Из аудита 2026-07-02 (Фаза 4, verified на main 2026-07-03). **Находка:** `tradein-mvp/backend/app/api/v1/admin.py:551,557,580,586,629,669,672,679` — `HTTPException(detail=f"fetch failed: {e}")` и аналоги отдают сырой текст исключения в HTTP. Исключения psycopg/httpx могут содержать DSN-фрагменты, внутренние хосты, пути. Роуты admin-gated, но defense-in-depth (особенно пока секрет #2213 не запровижинен). **Acceptance:** - [ ] В HTTP — generic-сообщение + короткий error-id; полный текст — только в `logger.exception` (→ GlitchTip). - [ ] Единый хелпер вместо 8 копий. - [ ] Тест: исключение с «секретным» текстом не появляется в теле ответа. Scope: `tradein-mvp/backend/app/api/v1/admin.py`.
lekss361 added the
priority/p2
scope/backend
security
tradein
labels 2026-07-02 21:33:29 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2234
No description provided.