Cross-site scripting (XSS) je typ bezpečnostného zneužitia, ktorý útočníkom umožňuje vkladať škodlivé skripty na webové stránky pomocou klientskeho kódu. Predstavuje značnú hrozbu, pretože útočníci ho môžu použiť na odcudzenie identity používateľov, získanie prístupu k citlivým údajom alebo dokonca zmenu obsahu stránky.
Je taký nebezpečný, že v roku 2021 bol číslo dva v spoločnom zozname 25 najnebezpečnejších slabín. To znamená, že ak vytvárate webové stránky, musíte vedieť o skriptovaní medzi stránkami a o tom, ako mu zabrániť.
Ako funguje skriptovanie medzi stránkami?
Predtým, ako pochopíte, ako funguje skriptovanie medzi lokalitami, je dôležité vedieť, čo znamená politika rovnakého pôvodu (SOP). SOP je politika bezpečnostného mechanizmu, ktorá obmedzuje webovú stránku (jeden pôvod) čítať alebo zapisovať na inú webovú stránku (iný pôvod). Zabraňuje škodlivým webovým stránkam odosielať škodlivý kód na dôveryhodné webové stránky.
Útoky skriptovania medzi stránkami sa snažia obísť túto zásadu tým, že využívajú neschopnosť prehliadača rozlíšiť medzi legitímnym kódom HTML a škodlivým kódom. Útočník môže napríklad vložiť kód JavaScript do cieľovej webovej stránky. Predpokladajme, že prehliadač spustí kód a útočník získa prístup k tokenom relácie, súborom cookie a iným citlivým údajom.
Existujú tri typy cross-site skriptovanie, ktoré hackeri používajú na prelomenie webových stránok: odrazené, uložené a DOM XSS.
Ako zabrániť skriptovaniu medzi stránkami v Node
Nasleduje niekoľko krokov, ktoré môžete vykonať, aby ste zabránili skriptovaniu medzi lokalitami v Node.
Dezinfikovať vstup
Aby útočníci mohli vykonať útok XSS, musia byť schopní odoslať údaje do vašej webovej aplikácie a zobraziť ich používateľovi. Preto prvým preventívnym opatrením, ktoré musíte urobiť, je dezinfekcia všetkých vstupov, ktoré vaša aplikácia dostáva od svojich používateľov. To je dôležité, pretože to zistí falošné údaje skôr, ako ich server spustí. Môžete to urobiť ručne alebo použiť podobný nástroj validátor čo robí proces rýchlejším.
Môžete napríklad použiť validátor na escapovanie značiek HTML vo vstupe používateľa, ako je uvedené nižšie.
importovať validátor od "validátor";
nech userInput = `Jane <script onload="upozornenie ('XSS hack');"></script>`;
nech sanitizedInput = validator.escape (userInput);
Ak by ste spustili vyššie uvedený kód, dezinfikovaný výstup by bol tento.
Jane < script onload=" upozornenie ('Hack XSS');"></ skript>
Obmedziť vstup používateľa
Obmedzte typ vstupu, ktorý môže používateľ odoslať do vášho formulára prostredníctvom overenia. Napríklad, ak máte vstupné pole pre e-mail, povoľte vstup iba vo formáte e-mailu. Týmto spôsobom minimalizujete pravdepodobnosť, že útočníci odošlú zlé údaje. Môžete na to použiť aj balík validátorov.
Implementujte iba zásady používania súborov cookie HTTP
Súbory cookie ukladajú údaje do lokálnej vyrovnávacej pamäte a poslať ho späť na server cez HTTP. Útočníci však môžu na prístup k nim cez prehliadač použiť aj JavaScript, takže sú ľahkým cieľom.
Súbor cookie iba HTTP je zásada, ktorá bráni skriptom na strane klienta v prístupe k údajom súborov cookie. To znamená, že aj keď vaša aplikácia obsahuje chybu zabezpečenia a útočník ju zneužije, nebude mať prístup k súboru cookie.
Tu je príklad toho, ako môžete implementovať politiku cookie iba pre HTTP v Node.js pomocou Express:
aplikácie.používať(expresné.relácia({
tajomstvo: "tajný",
cookie: {
http Only: pravda,
zabezpečiť: pravda
}
}))
Ak sa útočník pokúsil získať prístup k súboru cookie pomocou súboru http Only nastavenú na hodnotu true, ako je uvedené vyššie, dostanú prázdny reťazec.
Skriptovanie medzi stránkami je pre hackerov jednoduchým cieľom
Aj keď je zaistenie bezpečnosti vašej aplikácie kľúčové, jej implementácia môže byť komplikovaná. V tomto príspevku ste sa dozvedeli o útokoch skriptovania medzi stránkami a o tom, ako im môžete zabrániť v Node. Keďže útočníci využívajú slabé miesta vo vašej aplikácii na vloženie škodlivého kódu do vášho servera, vždy sa uistite, že vstup od používateľa dezinfikujete. Týmto spôsobom odstránite škodlivý kód skôr, ako ho vaša aplikácia uloží alebo spustí.