Cross-site skriptēšana (XSS) ir drošības izmantošanas veids, kas ļauj uzbrucējiem ievadīt vietnēs ļaunprātīgus skriptus, izmantojot klienta kodu. Tas rada ievērojamus draudus, jo uzbrucēji to var izmantot, lai uzdotos par lietotājiem, piekļūtu sensitīviem datiem vai pat mainītu vietnes lapas saturu.

Tas ir tik bīstami, ka 2021. gadā tas bija otrajā vietā kopējā vājo vietu uzskaites sarakstā starp 25 bīstamākajām nepilnībām. Tas nozīmē, ka, veidojot vietnes, jums jāzina par starpvietņu skriptēšanu un to novēršanu.

Kā darbojas starpvietņu skriptēšana?

Pirms saprast, kā darbojas starpvietņu skriptēšana, ir svarīgi zināt, ko nozīmē vienas izcelsmes politika (SOP). SOP ir drošības mehānisma politika, kas ierobežo vietni (viena izcelsme) lasīt vai rakstīt uz citu vietni (cita izcelsme). Tas neļauj ļaunprātīgām vietnēm nosūtīt ļaunprātīgu kodu uzticamām vietnēm.

Vairāku vietņu skriptu uzbrukumi mēģina apiet šo politiku, izmantojot pārlūkprogrammas nespēju atšķirt likumīgu HTML un ļaunprātīgu kodu. Piemēram, uzbrucējs mērķa vietnē var ievadīt JavaScript kodu. Pieņemsim, ka pārlūkprogramma izpilda kodu un uzbrucējs iegūst piekļuvi sesijas marķieriem, sīkfailiem un citiem sensitīviem datiem.

Ir trīs veidu starpvietņu skriptēšana, ko hakeri izmanto, lai uzlauztu vietnes: atspoguļots, saglabāts un DOM XSS.

Kā novērst starpvietņu skriptēšanu mezglā

Tālāk ir norādītas dažas darbības, kuras varat veikt, lai novērstu starpvietņu skriptēšanu Node.

Sanitize ievade

Lai veiktu XSS uzbrukumu, uzbrucējiem ir jāspēj nosūtīt datus uz jūsu tīmekļa lietojumprogrammu un parādīt to lietotājam. Tāpēc pirmais profilaktiskais pasākums, kas jums jāveic, ir visas ievades, ko jūsu lietojumprogramma saņem no lietotājiem, dezinfekcija. Tas ir ļoti svarīgi, jo tas atklāj viltus datus, pirms serveris tos izpilda. To var izdarīt manuāli vai izmantot līdzīgu rīku pārbaudītājs kas padara procesu ātrāku.

Piemēram, varat izmantot pārbaudītājs lai izvairītos no HTML tagiem lietotāja ievadē, kā norādīts tālāk.

imports pārbaudītājs no "validators";
let userInput = `Džeina <skripta ielāde ="brīdināt ('XSS uzlaušana');"></script>`;
ļaut sanitizedInput = validator.escape (userInput);

Ja palaist iepriekš minēto kodu, dezinficētā izvade būtu šāda.

Džeina &lt; skripta ielāde =&quot; brīdināt (&#x27;XSS uzlaušana&#x27;);&quot;&gt;&lt;&#x2F; skripts&gt;

Ierobežot lietotāja ievadi

Ierobežojiet ievades veidu, ko lietotājs var iesniegt jūsu veidlapā, izmantojot validāciju. Piemēram, ja jums ir e-pasta ievades lauks, atļaujiet ievadi tikai e-pasta formātā. Tādā veidā jūs samazinat iespēju, ka uzbrucēji iesniegs sliktus datus. Šim nolūkam varat izmantot arī validatora pakotni.

Ieviesiet tikai HTTP sīkfailu politiku

Sīkfaili saglabā datus vietējā kešatmiņā un nosūtiet to atpakaļ uz serveri, izmantojot HTTP. Taču uzbrucēji var arī izmantot JavaScript, lai tiem piekļūtu, izmantojot pārlūkprogrammu, tāpēc tie ir viegli mērķi.

Tikai HTTP sīkfails ir politika, kas neļauj klienta puses skriptiem piekļūt sīkfailu datiem. Tas nozīmē, ka pat tad, ja jūsu lietojumprogrammā ir ievainojamība un uzbrucējs to izmantos, viņš nevarēs piekļūt sīkfailam.

Tālāk ir sniegts piemērs tam, kā vietnē Node.js varat ieviest tikai HTTP sīkfailu politiku, izmantojot Express:

lietotne.izmantot(izteikt.sesija({
noslēpums: "noslēpums",
sīkfails: {
Tikai http: taisnība,
drošs: taisnība
}
}))

Ja uzbrucējs mēģināja piekļūt sīkfailam, izmantojot Tikai http tags iestatīts uz True, kā parādīts iepriekš, tie saņems tukšu virkni.

Vairāku vietņu skriptēšana ir vienkāršs mērķis hakeriem

Lai gan jūsu lietojumprogrammas drošības nodrošināšana ir ļoti svarīga, tās ieviešana var kļūt sarežģīta. Šajā ziņā jūs uzzinājāt par starpvietņu skriptu uzbrukumiem un to, kā tos novērst pakalpojumā Node. Tā kā uzbrucēji izmanto jūsu lietojumprogrammas ievainojamības priekšrocības, lai ievadītu jūsu serverī ļaunprātīgu kodu, vienmēr nodrošiniet, lai lietotāja ievadītā informācija tiktu dezinficēta. To darot, jūs noņemat ļaunprātīgo kodu, pirms lietojumprogramma to saglabā vai izpilda.