714d6885f9
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>
48 lines
2.6 KiB
Markdown
48 lines
2.6 KiB
Markdown
# План — 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); фронт и схема не трогаются.
|
|
|
|
```skills-json
|
|
["test-driven-development"]
|
|
```
|
|
|
|
```steps-json
|
|
[
|
|
{"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"}
|
|
]
|
|
```
|
|
|
|
```verified-context-json
|
|
[
|
|
{"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).
|