Открытая схема API./api/openapi.json (68 путей), /api/docs, /api/redoc (main.py:157) доступны без авторизации во всех окружениях — облегчает разведку. Рекомендация: закрыть docs/openapi в production (или под админ-сессией).
Нет 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-сертификат валиден).
**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
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). Мёрж и закрытие — за вами.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity (предложение): Low (раскрытие информации).
Два смежных пункта хардненинга edge/раскрытия:
/api/openapi.json(68 путей),/api/docs,/api/redoc(main.py:157) доступны без авторизации во всех окружениях — облегчает разведку. Рекомендация: закрыть docs/openapi вproduction(или под админ-сессией).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).
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). Мёрж и закрытие — за вами.