Skriptiranje na več mestih (XSS) je vrsta varnostnega izkoriščanja, ki napadalcem omogoča vbrizgavanje zlonamernih skriptov na spletna mesta z uporabo odjemalske kode. Predstavlja pomembno grožnjo, saj ga napadalci lahko uporabijo za lažno predstavljanje uporabnikov, pridobitev dostopa do občutljivih podatkov ali celo spreminjanje vsebine strani spletnega mesta.
Tako nevarno je, da je bilo leta 2021 drugo na skupnem seznamu 25 najbolj nevarnih slabosti. To pomeni, da če ustvarjate spletna mesta, morate vedeti o skriptiranju med spletnimi mesti in kako ga preprečiti.
Kako deluje skripta med spletnimi mesti?
Preden razumete, kako deluje skriptiranje na več mestih, je pomembno vedeti, kaj pomeni politika istega izvora (SOP). SOP je politika varnostnega mehanizma, ki spletnemu mestu (en izvor) omejuje branje ali pisanje na drugo spletno mesto (drugega izvora). Zlonamernim spletnim mestom preprečuje pošiljanje zlonamerne kode zaupanja vrednim spletnim mestom.
Skriptni napadi med spletnimi mesti poskušajo zaobiti to politiko z izkoriščanjem nezmožnosti brskalnika, da bi razlikoval med zakonitim HTML in zlonamerno kodo. Napadalec lahko na primer vnese kodo JavaScript v ciljno spletno mesto. Recimo, da brskalnik izvede kodo in napadalec pridobi dostop do žetonov seje, piškotkov in drugih občutljivih podatkov.
Obstajajo tri vrste skripti med spletnimi mesti, ki jih hekerji uporabljajo za zlom spletnih mest: odražen, shranjen in DOM XSS.
Kako preprečiti skriptovanje med spletnimi mesti v Node
Spodaj je nekaj korakov, ki jih lahko storite, da preprečite skriptiranje med spletnimi mesti v Node.
Sanitizacija vnosa
Napadalci morajo biti sposobni poslati podatke vaši spletni aplikaciji in jih prikazati uporabniku, da lahko izvedejo napad XSS. Zato je prvi preventivni ukrep, ki ga morate sprejeti, razkužiti vse podatke, ki jih vaša aplikacija prejme od svojih uporabnikov. To je ključnega pomena, ker zazna lažne podatke, preden jih strežnik izvede. To lahko storite ročno ali uporabite orodje, kot je validator kar pospešuje proces.
Na primer, lahko uporabite validator za ubežanje oznak HTML pri uporabniškem vnosu, kot je spodaj.
uvoz validator od "validator";
dovoli uporabniku vnos = `Jane <skript onload="opozorilo ('XSS hack');"></script>`;
pustiti sanitizedInput = validator.escape (userInput);
Če bi zagnali zgornjo kodo, bi bil saniran izhod tale.
Jane < skript onload=" opozorilo ('XSS hack');"></ skripta>
Omejite uporabniški vnos
Omejite vrsto vnosa, ki ga lahko uporabnik vnese v vaš obrazec s preverjanjem. Če imate na primer vnosno polje za e-pošto, dovolite vnos samo v obliki e-pošte. Na ta način zmanjšate možnosti, da bi napadalci predložili slabe podatke. Za to lahko uporabite tudi paket validatorja.
Implementirajte politiko piškotkov samo HTTP
Piškotki shranjujejo podatke v lokalni predpomnilnik in ga pošlji nazaj na strežnik prek HTTP. Toda napadalci lahko uporabljajo tudi JavaScript za dostop do njih prek brskalnika, zato so lahke tarče.
Piškotek samo za HTTP je pravilnik, ki skriptom na strani odjemalca preprečuje dostop do podatkov piškotkov. To pomeni, da tudi če vaša aplikacija vsebuje ranljivost in jo napadalec izkoristi, ne bo mogel dostopati do piškotka.
Tukaj je primer, kako lahko z uporabo Expressa implementirate politiko piškotkov samo HTTP v Node.js:
app.uporaba(ekspresno.session({
skrivnost: "skrivnost",
piškotek: {
samo http: prav,
varno: prav
}
}))
Če je napadalec poskušal dostopati do piškotka z Samo http nastavljeno na true, kot je prikazano zgoraj, bi prejeli prazen niz.
Skriptiranje med spletnimi mesti je lahka tarča za hekerje
Čeprav je zagotavljanje varnosti vaše aplikacije ključnega pomena, se lahko njena implementacija zaplete. V tej objavi ste izvedeli o napadih skriptnega skripta med spletnimi mesti in o tem, kako jih lahko preprečite v Node. Ker napadalci izkoriščajo ranljivosti v vaši aplikaciji za vbrizgavanje zlonamerne kode v vaš strežnik, vedno poskrbite, da boste očistili uporabniški vnos. S tem odstranite zlonamerno kodo, preden jo vaša aplikacija shrani ali izvede.