a4a8ea31b9
Убраны дубли HTTP-заголовков. nginx уже шлёт enforcing CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, HSTS, Permissions-Policy, COOP, CORP через add_header always. App-уровневый middleware SecurityHeaders дублировал четыре из них и слал лишний CSP Report-Only; на проде add_header always плюс PHP-заголовок давали дубль в ответе. - удалён middleware SecurityHeaders и его регистрация в bootstrap/app.php - SecurityHeadersTest переписан: фиксирует, что приложение эти заголовки не ставит Прод-дедуп вступит в силу после деплоя. Verify локально 4 из 4 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
31 lines
1.5 KiB
PHP
31 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Консолидация security-заголовков (18.06.2026): единый источник — nginx
|
|
* (/etc/nginx/sites-available/liderra, add_header ... always — CSP enforcing,
|
|
* X-Frame-Options, X-Content-Type-Options, Referrer-Policy, HSTS, Permissions-Policy,
|
|
* COOP/CORP). App-уровневый middleware SecurityHeaders удалён, чтобы не дублировать
|
|
* заголовки в ответе (на проде add_header always + PHP-заголовок = дубль).
|
|
*
|
|
* Этот тест фиксирует консолидацию: приложение само эти заголовки больше НЕ ставит.
|
|
* Бьём по публичному / (welcome SPA) — auth и БД не нужны.
|
|
*/
|
|
|
|
test('приложение НЕ ставит Content-Security-Policy-Report-Only (источник CSP — enforcing nginx)', function () {
|
|
$this->get('/')->assertHeaderMissing('Content-Security-Policy-Report-Only');
|
|
});
|
|
|
|
test('приложение НЕ дублирует X-Frame-Options (его ставит nginx)', function () {
|
|
$this->get('/')->assertHeaderMissing('X-Frame-Options');
|
|
});
|
|
|
|
test('приложение НЕ дублирует Referrer-Policy (его ставит nginx)', function () {
|
|
$this->get('/')->assertHeaderMissing('Referrer-Policy');
|
|
});
|
|
|
|
test('приложение НЕ дублирует X-Content-Type-Options (его ставит nginx)', function () {
|
|
$this->get('/')->assertHeaderMissing('X-Content-Type-Options');
|
|
});
|