53fb7b7760
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
30 lines
1.5 KiB
PHP
30 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');
|
|
});
|