Security Headers
Security Headers
Excerpt:
Security headers dodaju važan zaštitni sloj na nivou web servera ili reverse proxy-ja, kontrolišući ponašanje browsera, učitavanje resursa, iframe prikaz, HTTPS pravila i dozvole za osetljive funkcije.
Security Headers
Security headers su HTTP header-i koje server šalje browseru kako bi definisao sigurnosna pravila za sajt ili aplikaciju. Oni ne zamenjuju bezbedan kod, dobru autentifikaciju ili server hardening, ali značajno smanjuju rizik od čestih napada i pogrešnog ponašanja browsera.
Jedan od najvažnijih header-a je Strict-Transport-Security, poznat kao HSTS. On govori browseru da ubuduće koristi samo HTTPS vezu za određeni domen. Kada je pravilno podešen, pomaže da se izbegne slučajno vraćanje korisnika na nebezbedan HTTP.
X-Content-Type-Options: nosniff sprečava browser da pogađa tip fajla kada server pošalje pogrešan ili nejasan MIME type. To smanjuje rizik da browser izvrši sadržaj na način koji nije očekivan, naročito kod skripti i upload fajlova.
X-Frame-Options ili modernija Content-Security-Policy frame pravila kontrolišu da li se stranica sme prikazivati unutar iframe-a. Ovo je važno za zaštitu od clickjacking napada, gde se korisniku prikazuje lažni ili preklopljen interfejs.
Content-Security-Policy je najmoćniji, ali i najosetljiviji security header. On definiše odakle sajt sme da učitava skripte, stilove, slike, fontove, iframe-ove i druge resurse. Dobar CSP može značajno smanjiti rizik od XSS napada, ali loše podešen CSP može polomiti funkcionalnost sajta.
Referrer-Policy kontroliše koliko informacija browser šalje kada korisnik klikne link ka drugom sajtu. Time se može smanjiti nepotrebno otkrivanje punih URL-ova, parametara i internih putanja spoljnim servisima.
Permissions-Policy ograničava pristup funkcijama kao što su kamera, mikrofon, geolokacija, payment API i slične browser mogućnosti. Ako sajt ne koristi te funkcije, bolje je eksplicitno ih isključiti nego ostaviti browseru otvorenu mogućnost.
Security headers se često najbolje postavljaju na reverse proxy sloju. Caddy, Nginx ili Apache mogu centralno dodati iste header-e za više aplikacija, čime se smanjuje potreba da svaka aplikacija posebno rešava osnovna sigurnosna pravila.
Kod WordPress i drugih CMS sistema treba biti oprezan sa prestrogim pravilima. Pluginovi, eksterni fontovi, analytics skripte, payment gateway-i i embed sadržaji često učitavaju resurse sa drugih domena. Zato security header-e treba testirati pre produkcione primene.
Dobar security header setup je balans između zaštite i funkcionalnosti. Kada su HSTS, content type zaštita, iframe pravila, referrer politika, permissions policy i eventualni CSP pravilno podešeni, sajt dobija dodatni sloj sigurnosti bez vidljivog uticaja na korisničko iskustvo.