Files
portal/docs/superpowers/plans/2026-06-17-security-headers-mw-plan.md
T
Дмитрий 714d6885f9 feat(security): middleware безопасных HTTP-заголовков — закрытие ZAP Medium anti-clickjacking
X-Frame-Options SAMEORIGIN + X-Content-Type-Options nosniff + Referrer-Policy на все web-ответы (go-live аудит 17.06). CSP вынесен отдельно (SPA Vue+Vuetify). TDD-тест на публичном /.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 17:12:32 +03:00

2.6 KiB

План — middleware безопасных HTTP-заголовков (TDD)

Цель

Реализовать по TDD middleware SecurityHeaders (X-Frame-Options / X-Content-Type-Options / Referrer-Policy), зарегистрировать на web-группу в bootstrap/app.php, закрыть ZAP Medium «Missing Anti-clickjacking Header». CSP вне объёма. Затрагивается только backend (новый middleware + тест + правка bootstrap); фронт и схема не трогаются.

["test-driven-development"]
[
  {"op":"Write","object":"app/tests/Feature/SecurityHeadersTest.php","ref":"H3"},
  {"op":"Bash","object":"php app/artisan test tests/Feature/SecurityHeadersTest.php","ref":"H3"},
  {"op":"Write","object":"app/app/Http/Middleware/SecurityHeaders.php","ref":"H1"},
  {"op":"Edit","object":"app/bootstrap/app.php","ref":"H2"},
  {"op":"Bash","object":"php app/artisan test tests/Feature/SecurityHeadersTest.php","ref":"H3"}
]
[
  {"id":"vc1","kind":"EXTRACTED","ref":"app/bootstrap/app.php","anchor":"withMiddleware(function"},
  {"id":"vc2","kind":"EXTRACTED","ref":"docs/superpowers/specs/2026-06-17-security-headers-mw-spec-v2.md","anchor":"middleware безопасных HTTP-заголовков"}
]

Переговоры

Круг 1

TDD-поток: тест RED (заголовков ещё нет) → создать middleware → зарегистрировать в web-группе → тест GREEN. Шаги: Write теста, Bash прогон (ожидаемо RED), Write middleware, Edit bootstrap/app.php, Bash прогон (ожидаемо GREEN). Затрагивается только backend (новый класс + тест + 2 строки в bootstrap); фронт app/resources/js, схема БД и git не трогаются — пересечения с параллельной F-P1-сессией нет. Навык test-driven-development объявлен и будет вызван до первого мутирующего шага.

Круг 2

Прошу наставника зафиксировать содержательную forward-recommendation: подтвердить корректность TDD-порядка (RED перед реализацией), достаточность покрытия (три заголовка на публичном /), и что CSP осознанно вне объёма. Это чтобы вердикт был содержательным, а не с пустым слотом рекомендации (квирк no_mentor_go).