Хардненинг: закрыть схему API и добавить security-заголовки (F6) #61

Closed
opened 2026-09-13 16:18:06 +03:00 by Agent · 1 comment
Collaborator

Severity (предложение): Low (раскрытие информации).

Два смежных пункта хардненинга edge/раскрытия:

  1. Открытая схема API. /api/openapi.json (68 путей), /api/docs, /api/redoc (main.py:157) доступны без авторизации во всех окружениях — облегчает разведку. Рекомендация: закрыть docs/openapi в production (или под админ-сессией).
  2. Нет security-заголовков. На edge (deploy/vps/Caddyfile) не выставляются Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy; виден Server: Caddy. Рекомендация: добавить заголовки в общий сниппет (edge), переопределить/убрать Server.

Evidence: локально GET /api/openapi.json = 200 (68 путей); на test-домене в ответе только Cache-Control: no-store и Server: Caddy (security-заголовков нет; TLS-сертификат валиден).

Обнаружено при работе над #25 (находка F6).

**Severity (предложение): Low (раскрытие информации).** Два смежных пункта хардненинга edge/раскрытия: 1. **Открытая схема API.** `/api/openapi.json` (68 путей), `/api/docs`, `/api/redoc` (`main.py:157`) доступны без авторизации во всех окружениях — облегчает разведку. Рекомендация: закрыть docs/openapi в `production` (или под админ-сессией). 2. **Нет security-заголовков.** На edge (`deploy/vps/Caddyfile`) не выставляются `Strict-Transport-Security`, `Content-Security-Policy`, `X-Content-Type-Options`, `X-Frame-Options`, `Referrer-Policy`, `Permissions-Policy`; виден `Server: Caddy`. Рекомендация: добавить заголовки в общий сниппет `(edge)`, переопределить/убрать `Server`. **Evidence:** локально `GET /api/openapi.json` = `200` (68 путей); на test-домене в ответе только `Cache-Control: no-store` и `Server: Caddy` (security-заголовков нет; TLS-сертификат валиден). Обнаружено при работе над #25 (находка F6).
Agent added this to the 1.37 - смена аутентификации и смежный пен тест milestone 2026-09-13 16:18:06 +03:00
Agent added the Kind/Security label 2026-09-13 16:18:06 +03:00
Agent self-assigned this 2026-09-13 17:00:21 +03:00
Agent added the
Reviewed
Confirmed
1
label 2026-09-13 17:00:23 +03:00
Agent added the
Status
In Review
label 2026-09-13 17:25:33 +03:00
Author
Collaborator

F6 реализовано в PR #63 — #63

openapi.json/docs/redoc закрыты в production (в dev/test остаются для gen:api). Security-заголовки (HSTS, nosniff, X-Frame-Options, Referrer-Policy, Permissions-Policy, скрытый Server) добавлены в (edge). CSP подготовлена, но выключена до проверки на test-клоне (строгая политика ломает SPA/Telegram-виджет/SSE). Мёрж и закрытие — за вами.

F6 реализовано в PR #63 — https://gitea.arseniev.info/NotBigGhost/ForbiddenStarsApp/pulls/63 `openapi.json`/docs/redoc закрыты в production (в dev/test остаются для `gen:api`). Security-заголовки (HSTS, nosniff, X-Frame-Options, Referrer-Policy, Permissions-Policy, скрытый Server) добавлены в `(edge)`. CSP подготовлена, но **выключена до проверки на test-клоне** (строгая политика ломает SPA/Telegram-виджет/SSE). Мёрж и закрытие — за вами.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: NotBigGhost/ForbiddenStarsApp#61