Cross-site scripting (XSS) este un tip de exploatare de securitate care permite atacatorilor să injecteze scripturi rău intenționate pe site-uri web folosind codul client. Reprezintă o amenințare semnificativă, deoarece atacatorii îl pot folosi pentru a uzurpa identitatea utilizatorilor, pentru a obține acces la date sensibile sau chiar pentru a modifica conținutul paginii site-ului web.
Este atât de periculos încât, în 2021, a fost numărul doi în lista de enumerare a punctelor slabe comune a celor mai periculoase 25 de puncte slabe. Aceasta înseamnă că, dacă creați site-uri web, trebuie să cunoașteți despre scripturile între site-uri și cum să o preveniți.
Cum funcționează Cross-Site Scripting?
Înainte de a înțelege cum funcționează cross-site scripting, este important să știți ce înseamnă politica de aceeași origine (SOP). SOP este o politică de mecanism de securitate care restricționează un site web (o origine) de la citirea sau scrierea pe un alt site web (o origine diferită). Împiedică site-urile web rău intenționate să trimită cod rău intenționat către site-uri web de încredere.
Atacurile cu scripturi între site-uri încearcă să ocolească această politică exploatând incapacitatea browserului de a distinge între HTML legitim și cod rău intenționat. De exemplu, un atacator poate injecta cod JavaScript în site-ul web țintă. Să presupunem că browserul execută codul, iar atacatorul obține acces la jetoane de sesiune, cookie-uri și alte date sensibile.
Există trei tipuri de cross-site scripting pe care hackerii le folosesc pentru a sparge site-uri web: reflectat, stocat și DOM XSS.
Cum să preveniți scripturile între site-uri în Node
Următorii sunt câțiva pași pe care îi puteți lua pentru a preveni scripturile între site-uri în Node.
Intrare de igienizare
Atacatorii trebuie să poată trimite date către aplicația dvs. web și să le afișeze unui utilizator pentru a efectua un atac XSS. Prin urmare, prima măsură preventivă pe care trebuie să o luați este igienizarea tuturor informațiilor pe care aplicația dvs. le primește de la utilizatorii săi. Acest lucru este crucial deoarece detectează datele false înainte ca serverul să le execute. Puteți face acest lucru manual sau utilizați un instrument precum validator ceea ce face procesul mai rapid.
De exemplu, puteți utiliza validator pentru a scăpa de etichetele HTML în introducerea utilizatorului, ca mai jos.
import validator din „validator”;
lasă userInput = `Jane <script onload="alerta('Hack XSS');"></script>`;
lăsa sanitizedInput = validator.escape (userInput);
Dacă ar fi să rulați codul de mai sus, rezultatul igienizat ar fi acesta.
Jane < script onload=" alerta('Hack XSS');"></ scenariu>
Restricționați intrarea utilizatorului
Restricționați tipul de intrare pe care un utilizator îl poate trimite în formularul dvs. prin validare. De exemplu, dacă aveți un câmp de introducere pentru un e-mail, permiteți introducerea numai cu formatul de e-mail. În acest fel, minimizați șansele ca atacatorii să trimită date proaste. Puteți utiliza, de asemenea, pachetul de validare pentru aceasta.
Implementați politica privind cookie-urile numai HTTP
Cookie-urile stochează date într-un cache local și trimiteți-l înapoi la server prin HTTP. Dar atacatorii pot folosi și JavaScript pentru a le accesa prin browser, deci sunt ținte ușoare.
Modulul cookie numai HTTP este o politică care împiedică scripturile de la partea clientului să acceseze datele cookie. Aceasta înseamnă că, chiar dacă aplicația dvs. conține o vulnerabilitate și un atacator o exploatează, acesta nu va putea accesa cookie-ul.
Iată un exemplu despre cum puteți implementa politica privind cookie-urile numai HTTP în Node.js folosind Express:
aplicația.utilizare(expres.sesiune({
secret: "secret",
cookie: {
Doar http: Adevărat,
sigur: Adevărat
}
}))
Dacă un atacator a încercat să acceseze cookie-ul cu Numai http eticheta setată la adevărat, așa cum se arată mai sus, vor primi un șir gol.
Cross-Site Scripting este o țintă ușoară pentru hackeri
Deși asigurarea securității aplicației dvs. este crucială, implementarea acesteia poate deveni complicată. În această postare, ați aflat despre atacurile de scripting între site-uri și cum le puteți preveni în Node. Deoarece atacatorii profită de vulnerabilitățile din aplicația dvs. pentru a injecta cod rău intenționat în serverul dvs., asigurați-vă întotdeauna că igienizați intrarea utilizatorului. Făcând acest lucru, eliminați codul rău intenționat înainte ca aplicația dvs. să îl stocheze sau să îl execute.