nginx content security policy header

Здравейте,

В този пост ще споделя как можем да защитим сайта си ако използваме nginx за уеб сървър.

Воден от поста на Скот Хелме за CSP тръгнах да тествам CSP header-и на root.bg. Използвах неговия инструмент securityheaders.com и накрая постигнах желания резултат – A+ 🙂

nginx content security policy header

 

nginx content security policy header

Във виртуалния хост на сайта ни добавяме следните редове след location /

add_header Content-Security-Policy "block-all-mixed-content; frame-ancestors 'self' root.bg cdn.root.bg s.root.bg go.root.bg git.root.bg fonts.gstatic.com;"; 
add_header Content-Security-Policy-Report-Only "default-src https: data: 'unsafe-inline' 'unsafe-eval'; report-uri https://rootbg.report-uri.com/r/d/csp/reportOnly";

report-uri.com

Направих си регистрация в сайта report-uri.com и така започнах да събирам информация от уеб сървъра ми за XSS атаки, грешки в конфигурацията на уеб сървъра, мониторинг и всичко останало свързано с новите уеб стандарти.

Аз лично малко съм се олял с добавянето на излишни header-и, но почти всички от тях са за защита 🙂

HTTP/2 200 
date: Wed, 17 Oct 2018 07:13:17 GMT
content-type: text/html; charset=UTF-8
vary: Accept-Encoding
set-cookie: PHPSESSID=d2lar8sp9vq24752mip9lu31ls; path=/; secure; HttpOnly
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache
x-powered-by: 🐧
link: https://root.bg/wp-json/; rel="https://api.w.org/"
link: https://go.root.bg/21; rel=shortlink
server: rws
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-cache: HIT
x-xss-protection: 1; mode=block; report=https://rootbg.report-uri.com/r/d/xss/enforce
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
p3p: Can I help you? Contact me via https://root.bg/contacts/, CP=CAO ADMa DEVa IND PHY ONL UNI COM LOC
feature-policy: sync-xhr 'self' https://root.bg
content-security-policy: block-all-mixed-content; frame-ancestors 'self' root.bg cdn.root.bg s.root.bg go.root.bg git.root.bg fonts.gstatic.com;
content-security-policy-report-only: default-src https: data: 'unsafe-inline' 'unsafe-eval'; report-uri https://rootbg.report-uri.com/r/d/csp/reportOnly
referrer-policy: no-referrer-when-downgrade
expect-ct: enforce; max-age=86400; report-uri=https://rootbg.report-uri.com/r/d/ct/enforce
x-app-server: gevi
x-slogan: Respect is earned, not given!

Това е!