vulnerabilitățile de scriptare între site-uri au fost exploatate de atacatori de la începutul anilor 2000, iar XSS a fost pe lista OWASP Top 10 a riscurilor critice de securitate pentru aplicațiile web începând cu 2004. Cu toate acestea, mulți dezvoltatori, administratori de sistem și chiar unii testeri de penetrare încă nu o iau în serios. Pentru a deveni un hacker sau un apărător eficient al aplicațiilor web, trebuie să înțelegeți elementele de bază ale modului de prevenire a atacurilor XSS.
atacurile XSS sunt încă problemă
Cross-site scripting este un tip de vulnerabilitate aplicație web care permite atacatorilor să injecteze și să execute cod client-side rău intenționat în browser-ul victimei într-o aplicație web legitim.
impactul și severitatea atacurilor XSS reușite pot varia. Atacurile XSS ar putea duce la deturnarea sesiunii, jetoane furate, cookie-uri de sesiune furate și atacuri de falsificare a cererilor pe mai multe site-uri. Aceste atacuri pot duce la compromiterea conturilor de utilizator.
un atac XSS de succes poate permite, de asemenea, unui atacator să utilizeze cookie-uri furate sau falsificate pentru a se da drept utilizatori valizi. În cazurile în care utilizatorul valid are drepturi administrative în cadrul aplicației, atacatorul poate utiliza aceste privilegii pentru a modifica paginile sau pentru a executa codul de la distanță pe partea de server a aplicației.
tipuri de atacuri XSS
există trei tipuri de atacuri XSS: stocate, reflectate și Document Object Model (DOM) bazat.
- un atac XSS stocat permite unui atacator să încorporeze un script rău intenționat într-o pagină vulnerabilă, care este apoi executată atunci când o victimă vizualizează pagina. XSS stocat este considerat cel mai dăunător tip de atac XSS. De exemplu, atunci când un atacator injectează o sarcină utilă JavaScript rău intenționată direct într-o aplicație web vulnerabilă, browserul web salvează sarcina utilă JavaScript injectată. Apoi, de fiecare dată când victima vizitează site-ul sau aplicația web, codul rău intenționat este executat.
- un atac XSS reflectat apare atunci când sarcina utilă rău intenționată este încorporată într-un link și activată numai atunci când utilizatorul face clic pe link. Aici, sarcina utilă rău intenționată nu este stocată, ci este afișată doar pe pagina web sub forma unei adrese URL sau a unui mesaj de date.
- o vulnerabilitate XSS bazată pe DOM apare atunci când DOM este utilizat pentru a genera conținut dinamic care conține intrări de utilizator care pot fi procesate fără verificare. Acest tip de atac este efectuat cu JavaScript în browser-ul victimei
XSS attack prevention
pentru a preveni atacurile XSS, dezvoltatorii trebuie să valideze intrarea utilizatorului prin filtrarea sau scăparea corectă a caracterelor speciale și apoi codificarea ieșirii pentru a preveni atacurile XSS stocate și atacurile XSS reflectate. Următoarele caractere speciale trebuie întotdeauna filtrate sau scăpate pentru a preveni exploatarea lor cu rea intenție:
< |
> |
„ |
‘ |
) |
( |
& |
dezvoltatorii ar trebui să valideze intrarea utilizatorului-surse – și să codifice ieșirea-chiuvete – pentru a preveni atacurile XSS bazate pe DOM. Proprietatea sursei de intrare este locul de unde citește DOM, iar sursa este locul în care atacatorul poate injecta cod rău intenționat pentru a exploata vulnerabilitatea XSS. Următoarele proprietăți sursă trebuie evitate:
- URL
- documente
- locație
- href
- căutare
- hash
chiuvete sunt punctele în care DOM execută caracterele rău intenționate sau codul de la intrare-sursa-care, la rândul său, devine scos la pagina web. Aceste chiuvete ar trebui evitate pentru a preveni atacurile XSS bazate pe denial-of-service:
- innerHTML
- outerHTML
- write
dacă doriți să obțineți mai bine la înțelegerea și prevenirea atacurilor XSS, Google a construit un site de joc XSS pentru a învăța cum funcționează aceste atacuri și cum să le prevină mai bine. Proiectul Mutillidae 2 de la OWASP oferă, de asemenea, o țintă de învățare pentru profesioniștii din domeniul securității web pentru a-și îmbunătăți apărarea împotriva atacurilor XSS.