XSS znamená Cross-Site Scripting. Ide o typ zraniteľnosti webových aplikácií, pri ktorej útočník vkladá škodlivý kód (zvyčajne JavaScript) do webovej stránky alebo aplikácie. Tento kód sa následne spustí na strane používateľa (v jeho prehliadači), čo môže viesť k rôznym bezpečnostným problémom.
Ako XSS funguje:
1.Útočník vloží škodlivý kód:
•Môže to byť cez formulár, komentár, URL, alebo iný vstup, ktorý aplikácia neočistí.
2.Používateľ navštívi infikovanú stránku:
•Škodlivý kód sa spustí v prehliadači obete, akoby pochádzal z dôveryhodnej webovej stránky.
3.Dôsledky:
•Útočník môže získať citlivé údaje (napr. cookies, heslá), vykonávať akcie v mene obete alebo manipulovať s obsahom stránky.
Typy XSS:
1.Stored XSS (Uložený XSS):
•Škodlivý kód je trvalo uložený na serveri (napríklad v databáze) a aktivuje sa zakaždým, keď obeť navštívi infikovanú stránku.
•Príklad: Útočník pridá JavaScript do sekcie komentárov na blogu. Keď používateľ navštívi stránku s týmto komentárom, kód sa spustí.
2.Reflected XSS (Odrazený XSS):
•Škodlivý kód je priložený k URL a vykonáva sa ihneď po návšteve obete.
•Príklad: Útočník pošle obeť URL so škodlivým kódom, ktorý sa zobrazí v odpovedi stránky.
3.DOM-based XSS (Klientská XSS):
•Útočník manipuluje so stránkou priamo v prehliadači obete bez toho, aby komunikoval so serverom.
•Príklad: Nesprávne spracovanie používateľských vstupov na strane klienta (napríklad pomocou JavaScriptu).
Dôsledky XSS útokov:
1.Krádež citlivých údajov:
•Útočník môže ukradnúť cookies, ktoré obsahujú autentifikačné tokeny.
2.Falošné akcie:
•Útočník môže vykonávať akcie v mene používateľa (napr. odosielanie správ).
3.Šírenie škodlivého softvéru:
•Útočník môže presmerovať obeť na škodlivé stránky alebo nainfikovať jej zariadenie malvérom.
4.Deštrukcia obsahu:
•Útočník môže manipulovať obsah stránky, aby vyzerala inak.
Ako predchádzať XSS:
1.Očistenie a overenie vstupov:
•Všetky používateľské vstupy by mali byť správne validované a očistené od škodlivého kódu.
2.Špeciálne znaky zakódovať:
•Pre HTML použite escape sekvencie (<, >, & atď.).
•Pre JavaScript alebo URL encode špeciálne znaky.
3.Používanie Content Security Policy (CSP):
•CSP obmedzuje vykonávanie neautorizovaných skriptov na stránkach.
4.Používanie bezpečných knižníc:
•Napríklad knižnice ako DOMPurify dokážu bezpečne čistiť HTML a odstrániť škodlivý kód.
5.HTTPOnly cookies:
•Zabráňte JavaScriptu prístupu k citlivým cookies nastavením atribútu HttpOnly.
6.Frameworky a bezpečné praktiky:
•Moderné frameworky (napr. React, Angular) majú zabudované ochrany proti XSS.
Ako detegovať XSS:
•Penetračné testovanie:
•Skúste vložiť jednoduchý JavaScript (<script>alert(‘XSS’)</script>) do rôznych častí aplikácie.
•Automatizované nástroje:
•Napríklad OWASP ZAP, Burp Suite.
•Logy a monitoring:
•Monitorujte anomálie v spracovaní vstupov.