@happy-cat

Как правильно пройти валидацию mozilla observer?

https://observatory.mozilla.org/

Странная выдача тегов
X-Content-Type-Options
X-Frame-Options
X-XSS-Protection


В конфиге сайта они прописаны
add_header Content-Security-Policy "default-src 'self'; font-src *;img-src * data:; script-src *; style-src *";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=63072000" always;
add_header Content-Security-Policy "default-src 'self';";


Выдача curl
curl -I https://sitename.ru
server: nginx
date: Mon, 22 Nov 2021 17:51:04 GMT
content-type: text/html; charset=utf-8
set-cookie: CMSSESSIDd20b285e97a8=0t5knknkun36r2i4nionqf8gdj; path=/; domain=sitename.ru; secure; HttpOnly; SameSite=Strict
cache-control: public, max-age=10800
expires: Tue, 23 Nov 2021 17:51:02 GMT
last-modified: Mon, 15 Nov 2021 23:06:00 GMT
x-fastcgi-cache: HIT


Но если запросить конкретный файл с этого сайта то все Х-теги выдаются, где мой косяк?
curl -I https://sitename.ru/file.jpg
HTTP/2 200
server: nginx
date: Mon, 22 Nov 2021 17:57:46 GMT
content-type: image/jpeg
content-length: 82433
last-modified: Fri, 29 Jan 2021 21:32:16 GMT
etag: "60147ee0-14201"
expires: Thu, 31 Dec 2037 23:55:55 GMT
cache-control: max-age=315360000
content-security-policy: default-src 'self'; font-src *;img-src * data:; script-src *; style-src *
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
strict-transport-security: max-age=63072000
accept-ranges: bytes


619bdba66f885622324628.png
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
karabanov
@karabanov
Системный администратор
Если на уровне http указаны директивы add_header и на уровне server указаны директивы add_header, то будут использованы директивы c уровня server. Тоже самое происходит и на больших уровнях вложенности.
Директивы не склеиваются - наследование отменяется просто по факту наличия соответствующей директивы во вложенном блоке.

Приблизительно все директивы в nginx'е работают по одной и той же простой схеме: если директива задана на текущем уровне, то она не наследуется, если не задана - то наследуется. Исключения - отдельные директивы, которые вообще не наследуются.

̶И̶з̶ ̶п̶р̶е̶д̶с̶т̶а̶в̶л̶е̶н̶н̶о̶г̶о̶ ̶к̶у̶с̶о̶ч̶к̶а̶ ̶к̶о̶н̶ф̶и̶г̶а̶ ̶н̶е̶ ̶о̶ч̶е̶в̶и̶д̶н̶о̶,̶ ̶ч̶т̶о̶ ̶д̶о̶л̶ж̶н̶о̶ ̶п̶р̶о̶и̶с̶х̶о̶д̶и̶т̶ь̶ ̶д̶а̶л̶ь̶ш̶е̶.̶ ̶П̶р̶е̶д̶л̶а̶г̶а̶ю̶ ̶п̶р̶о̶д̶у̶б̶л̶и̶р̶о̶в̶а̶т̶ь̶ ̶д̶и̶р̶е̶к̶т̶и̶в̶ы̶ ̶a̶d̶d̶_̶h̶e̶a̶d̶e̶r̶ ̶в̶ ̶и̶н̶т̶е̶р̶е̶с̶у̶ю̶щ̶е̶м̶ ̶т̶е̶б̶я̶ ̶l̶o̶c̶a̶t̶i̶o̶n̶ ̶и̶л̶и̶ ̶п̶е̶р̶е̶п̶и̶с̶а̶т̶ь̶ ̶к̶о̶н̶ф̶и̶г̶ ̶т̶а̶к̶,̶ ̶ч̶т̶о̶б̶ы̶ ̶н̶а̶с̶л̶е̶д̶о̶в̶а̶н̶и̶е̶ ̶з̶а̶р̶а̶б̶о̶т̶а̶л̶о̶.̶
UPD
Так как ты привёл полный конфиг можно увидеть, что директивы с уровня server отменяются на уровне location @php в виду наличия там такой же директивы add_header. Продублируй интересующие тебя директивы add_header в этом location
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы