Security headers su mali HTTP response headeri koje server šalje browser-u sa svakom stranicom. Korisniku nevidljivi, ali daju browser-u upute kako zaštititi sajt od cross-site scripting (XSS), clickjacking, MIME sniffing napada, neželjenog data leakage-a i niza drugih klasičnih web napada.
2026. konfiguracija security header-a je standardni baseline sigurnosti svakog ozbiljnog WordPress sajta — ali većina sajtova ih i dalje nema ispravno postavljene. Ovaj vodič pokriva 7 najvažnijih header-a, kako ih provjeriti, kako uključiti i kako izbjeći blokiranje vlastitog sadržaja.
Što su security headers i zašto trebaju
Browser kad učita stranicu vidi HTTP odgovor sa:
- HTML body — sadržaj sajta.
- HTTP headers — meta podaci (cookies, content-type, cache rules, security policies).
Security headers su pravila u (2): "ne dozvoli inline JS", "ne dozvoli iframe-iranje", "prati Referer policy", itd. Browser ih čita i forsira preko tvog sadržaja — čak ako sajt ima vulnerability, security header može blokirat exploit.
7 obaveznih header-a za WordPress 2026
1. Strict-Transport-Security (HSTS)
Forsira HTTPS preko HTTP-a. Bez HSTS-a, korisnik koji upiše http://tvojsajt.hr ide preko HTTP redirect-a koji je ranjiv na MITM napad.
Strict-Transport-Security: max-age=31536000; includeSubDomains
Dodavanje preload i prijava na hstspreload.org daje dodatnu zaštitu, ali jednom preload-an, izbacivanje traje mjesecima.
2. Content-Security-Policy (CSP)
Najmoćniji security header — kaže browseru iz kojih izvora smije učitavat skripte, stilove, slike, fontove. Glavna obrana protiv XSS napada.
Content-Security-Policy: default-src 'self';
script-src 'self' 'unsafe-inline' https://www.googletagmanager.com;
style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
img-src 'self' data: https:;
font-src 'self' https://fonts.gstatic.com;
connect-src 'self' https://www.google-analytics.com;
frame-ancestors 'none';
WordPress challenge: WP inline JS/CSS, plugin-i koji učitavaju vanjske resurse, page builderi sa inline script-ima → CSP teško postavit strict-no. Realnost: započneš sa report-only mode (vidi što se krši), pa postupno tightenaš.
Content-Security-Policy-Report-Only: ...
Plus reporting endpoint koji prikuplja CSP violations:
Content-Security-Policy: ...; report-uri /csp-report
3. X-Frame-Options
Sprječava da netko ugrad tvoj sajt u <iframe> — clickjacking obrana.
X-Frame-Options: SAMEORIGIN
Opcije: DENY (nitko ne smije iframe-at), SAMEORIGIN (samo isti domain).
U CSP-u već postoji frame-ancestors direktiva koja radi isto — moderna alternative, ali oba ostavi za max kompatibilnost.
4. X-Content-Type-Options
Sprječava MIME sniffing — browser ne smije pogađat content type, mora poštivat Content-Type header.
X-Content-Type-Options: nosniff
Bez ovog, attacker može uplodati .txt file koji browser interpretira kao .js i izvrši.
5. Referrer-Policy
Kontrolira što tvoj sajt šalje u Referer header kad korisnik klikne external link. Privacy + security.
Referrer-Policy: strict-origin-when-cross-origin
Opcije:
no-referrer— nikad ne šalji Referer.same-origin— samo same-origin requests.strict-origin— origin only, ne path.strict-origin-when-cross-origin— najpopularniji 2026, full URL same-origin, samo origin cross-origin.
6. Permissions-Policy (raniji Feature-Policy)
Kontrolira browser APIs koje sajt smije koristit — kamera, mikrofon, lokacija, payment API, USB pristup, itd.
Permissions-Policy:
camera=(),
microphone=(),
geolocation=(self),
payment=(self "https://stripe.com"),
usb=()
Disable-aš sve što sajt ne koristi → manja attack surface.
7. Cross-Origin-Opener-Policy (COOP) i Cross-Origin-Embedder-Policy (COEP)
Napredne zaštite od Spectre i sličnih hardware napada. Tipično za enterprise sajtove sa sensitive data.
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
Pripazi: COEP može razbit external slike i embedded sadržaj. Postavi nakon detaljnog testa.
Kako provjeriti security headers
1. Online testeri
- securityheaders.com — daje grade A-F sa specifičnim preporukama.
- Mozilla Observatory — slično, broader scope.
- CSP Evaluator by Google — analiza CSP-a.
2. Browser DevTools
F12 → Network tab → klikni na main HTML request → Headers tab → vidiš sve response headere.
3. Komandna linija
curl -I https://tvojsajt.hr | grep -E 'strict-transport|content-security|x-frame|referrer-policy|permissions-policy|x-content-type'
Kako uključiti na WordPressu
Metoda 1: Apache (.htaccess)
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains" "expr=%{HTTPS} == 'on'"
Header set X-Content-Type-Options "nosniff"
Header set X-Frame-Options "SAMEORIGIN"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "camera=(), microphone=(), geolocation=(self)"
Header set Content-Security-Policy-Report-Only "default-src 'self' https:; script-src 'self' 'unsafe-inline'; report-uri /csp-report"
</IfModule>
Metoda 2: Nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=(self)" always;
Metoda 3: WordPress plugin
- Wordfence Security — uključi u Firewall → Advanced → Custom HTTP Response Headers.
- Solid Security (iThemes) — Security Headers section.
- HTTP Headers by Riccardo Vacirca — dedicated plugin sa GUI.
- Really Simple SSL Pro — Mixed Content Scanner + Security Headers tab.
Metoda 4: Cloudflare
Cloudflare Workers ili Page Rules mogu postaviti security headere bez diranja origin servera. Najlakše: Cloudflare Transform Rules → Add Response Headers.
Test-driven postavljanje (preporučeno)
- Postavi report-only CSP prvo.
- Postavi report-uri endpoint koji prima violations (Sentry, Report URI, ili custom WP endpoint).
- Browse-aj sajt 1-2 tjedna, prati violations.
- Identificiraj legitimnе izvore koje treba allow-at (npr. Google Tag Manager, Stripe.js, embedded YouTube).
- Update CSP sa allowed sources.
- Switch sa report-only na enforce mode.
- Continuous monitoring — novi plugin/feature može unijet new violation.
Najčešće zamke
- CSP previše strict razbije page builder — Elementor, Divi, Beaver Builder koriste inline JS. Treba
'unsafe-inline'ili nonce-based CSP. - X-Frame-Options blokira YouTube embed — provjeri da YouTube iframe (sa youtube.com origin) bude allow-an kroz
frame-srcu CSP-u. - HSTS preload jednosmjer — pažljivo prije submission, izbacivanje 3-6 mjeseci.
- COEP razbije external slike — koristiš samo ako kontroliš sve resurse.
- Permissions-Policy disablira što ne misliš — npr. ako disable-aš
cameraa imaš WP video plugin koji to koristi, neće radit.
Test pristup — što očekivat
Tipičan WP sajt na securityheaders.com:
- Bez security header postavki: grade F.
- Sa osnovnih 5 header-a (HSTS, X-Frame, X-Content-Type, Referrer-Policy, Permissions-Policy): grade B.
- Sa dobro postavljenim CSP-om: grade A ili A+.
Grade A je dovoljan za većinu komercijalnih sajtova. A+ je za sajtove gdje sigurnost je critical biz factor.
Što WMD pristup nudi
- LiteSpeed Cache plugin daje GUI za security headers.
- cPanel + ModSecurity dodaje server-level security pravila.
- Imunify360 automatic patching i WAF.
- Cloudflare integration za enterprise security header management.
- Konzultacija oko CSP fine-tuninga za specifične stack-ove (WP + WooCommerce + Stripe + GA4 = standardna konfiguracija koju imamo gotovu).
Najčešća pitanja
Hoće li security headers usporit sajt?
Ne. Headers su par byte-a po response-u, performance impact zanemarljiv.
Što ako CSP razbije nešto?
Kreni s report-only, postupno tightenaj. Nikad ne deploy-aj strict CSP direct u production bez testa.
Trebam li sve 7 header-a?
Minimum: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Plus: CSP (jako bitan ali kompleksan) i Permissions-Policy. COOP/COEP samo za napredne use case-eve.
Mogu li to sve kroz Cloudflare bez diranja servera?
Da. Cloudflare Transform Rules + Workers mogu postaviti sve security headere. Korisno ako ne želiš dirati origin config.