Skriptiranje na više mjesta (XSS) je vrsta sigurnosnog iskorištavanja koja napadačima omogućuje ubrizgavanje zlonamjernih skripti na web-mjesta koristeći klijentski kod. Predstavlja značajnu prijetnju jer ga napadači mogu koristiti za lažno predstavljanje korisnika, dobivanje pristupa osjetljivim podacima ili čak promjenu sadržaja stranice na web stranici.

Toliko je opasan da je 2021. bio broj dva na popisu zajedničkih slabosti 25 najopasnijih slabosti. To znači da ako izrađujete web-mjesta, morate znati o skriptiranju na više stranica i kako to spriječiti.

Kako funkcionira skriptiranje na više web stranica?

Prije nego što shvatite kako funkcionira skriptiranje na više lokacija, važno je znati što znači politika istog podrijetla (SOP). SOP je politika sigurnosnog mehanizma koja ograničava web stranicu (jednog podrijetla) od čitanja ili pisanja na drugu web stranicu (drugog porijekla). Spriječava zlonamjerne web stranice da šalju zlonamjerni kod na pouzdana web-mjesta.

Napadi skriptiranja na više web stranica pokušavaju zaobići ovo pravilo iskorištavanjem nemogućnosti preglednika da razlikuje legitimni HTML i zlonamjerni kod. Na primjer, napadač može ubaciti JavaScript kod u ciljanu web stranicu. Pretpostavimo da preglednik izvršava kod, a napadač dobije pristup tokenima sesije, kolačićima i drugim osjetljivim podacima.

Postoje tri vrste skriptiranje na više stranica koje hakeri koriste za razbijanje web-mjesta: reflektirano, pohranjeno i DOM XSS.

Kako spriječiti skriptiranje na više mjesta u Nodeu

Sljedeći su neki koraci koje možete poduzeti kako biste spriječili skriptiranje na više mjesta u Nodeu.

Sanitizirajte unos

Napadači moraju biti u mogućnosti poslati podatke vašoj web aplikaciji i prikazati ih korisniku kako bi izveli XSS napad. Stoga je prva preventivna mjera koju morate poduzeti dezinficirati sve podatke koje vaša aplikacija prima od svojih korisnika. Ovo je ključno jer otkriva lažne podatke prije nego ih poslužitelj izvrši. To možete učiniti ručno ili koristiti alat poput validator što proces čini bržim.

Na primjer, možete koristiti validator za izbjegavanje HTML oznaka u korisničkom unosu kao u nastavku.

uvoz validator iz "validator";
neka userInput = `Jane <skripta onload="upozorenje ('XSS hakiranje');"></script>`;
neka sanitizedInput = validator.escape (userInput);

Ako biste pokrenuli gornji kod, sanirani izlaz bi bio ovaj.

Jane &lt; skripta onload=&quot; upozorenje (&#x27;XSS hakiranje&#x27;);&quot;&gt;&lt;&#x2F; skripta&gt;

Ograničite unos korisnika

Ograničite vrstu unosa koje korisnik može poslati u svoj obrazac provjerom valjanosti. Na primjer, ako imate polje za unos za e-poštu, dopustite unos samo u formatu e-pošte. Na taj način minimizirate šanse da napadači dostave loše podatke. Za to također možete koristiti paket validatora.

Implementirajte samo HTTP politiku kolačića

Kolačići spremaju podatke u lokalnu predmemoriju i pošaljite ga natrag na poslužitelj putem HTTP-a. Ali napadači mogu koristiti i JavaScript da im pristupe putem preglednika, tako da su laka meta.

Kolačić samo za HTTP pravilo je koje sprječava skripte na strani klijenta da pristupe podacima kolačića. To znači da čak i ako vaša aplikacija sadrži ranjivost i napadač je iskoristi, neće moći pristupiti kolačiću.

Evo primjera kako možete implementirati politiku kolačića samo za HTTP u Node.js koristeći Express:

app.koristiti(izraziti.sjednica({
tajna: "tajna",
kolačić: {
Samo http: pravi,
siguran: pravi
}
}))

Ako je napadač pokušao pristupiti kolačiću s Samo http oznaku postavljenu na true kao što je prikazano gore, oni će primiti prazan niz.

Skriptiranje na više web stranica je laka meta za hakere

Iako je sigurnost vaše aplikacije ključna, njezina implementacija može postati komplicirana. U ovom ste postu naučili o napadima skriptiranja na više mjesta i kako ih možete spriječiti u Nodeu. Budući da napadači iskorištavaju ranjivosti vaše aplikacije za ubacivanje zlonamjernog koda u vaš poslužitelj, uvijek se pobrinite da dezinficirate unos korisnika. Na taj način uklanjate zlonamjerni kod prije nego što ga vaša aplikacija pohrani ili izvrši.