2026-06-17 17:12:32 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
/**
|
2026-06-18 09:31:47 +03:00
|
|
|
* Консолидация 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-заголовок = дубль).
|
|
|
|
|
*
|
|
|
|
|
* Этот тест фиксирует консолидацию: приложение само эти заголовки больше НЕ ставит.
|
2026-06-17 17:12:32 +03:00
|
|
|
* Бьём по публичному / (welcome SPA) — auth и БД не нужны.
|
|
|
|
|
*/
|
2026-06-18 09:31:47 +03:00
|
|
|
test('приложение НЕ ставит Content-Security-Policy-Report-Only (источник CSP — enforcing nginx)', function () {
|
|
|
|
|
$this->get('/')->assertHeaderMissing('Content-Security-Policy-Report-Only');
|
2026-06-17 17:12:32 +03:00
|
|
|
});
|
|
|
|
|
|
2026-06-18 09:31:47 +03:00
|
|
|
test('приложение НЕ дублирует X-Frame-Options (его ставит nginx)', function () {
|
|
|
|
|
$this->get('/')->assertHeaderMissing('X-Frame-Options');
|
2026-06-17 17:12:32 +03:00
|
|
|
});
|
|
|
|
|
|
2026-06-18 09:31:47 +03:00
|
|
|
test('приложение НЕ дублирует Referrer-Policy (его ставит nginx)', function () {
|
|
|
|
|
$this->get('/')->assertHeaderMissing('Referrer-Policy');
|
2026-06-17 17:12:32 +03:00
|
|
|
});
|
2026-06-17 19:30:51 +03:00
|
|
|
|
2026-06-18 09:31:47 +03:00
|
|
|
test('приложение НЕ дублирует X-Content-Type-Options (его ставит nginx)', function () {
|
|
|
|
|
$this->get('/')->assertHeaderMissing('X-Content-Type-Options');
|
2026-06-17 19:30:51 +03:00
|
|
|
});
|