Az XSS (cross-site scripting) egyfajta biztonsági kihasználás, amely lehetővé teszi a támadók számára, hogy rosszindulatú szkripteket fecskendezzenek be a webhelyekre ügyfélkód segítségével. Jelentős veszélyt jelent, mivel a támadók arra használhatják, hogy megszemélyesítsék a felhasználókat, hozzáférjenek érzékeny adatokhoz, vagy akár módosítsák a webhely oldaltartalmát.
Annyira veszélyes, hogy 2021-ben a második helyen állt a 25 legveszélyesebb gyengeség általános gyengeséglistáján. Ez azt jelenti, hogy ha webhelyeket hoz létre, ismernie kell a webhelyek közötti szkriptelést és annak megakadályozását.
Hogyan működik a Cross-Site Scripting?
Mielőtt megértené, hogyan működik a több telephelyen átívelő szkript, fontos tudnia, hogy mit jelent az azonos eredetű szabályzat (SOP). Az SOP egy biztonsági mechanizmus házirendje, amely korlátozza a webhelyek (egyik eredet) olvasását vagy írását egy másik webhelyre (másik eredetű). Megakadályozza, hogy a rosszindulatú webhelyek rosszindulatú kódot küldjenek megbízható webhelyekre.
A webhelyek közötti parancsfájl-támadások megpróbálják megkerülni ezt a szabályzatot, kihasználva a böngésző képtelenségét, hogy különbséget tudjon tenni a legitim HTML és a rosszindulatú kód között. Például egy támadó JavaScript-kódot fecskendezhet be a célwebhelyre. Tegyük fel, hogy a böngésző végrehajtja a kódot, és a támadó hozzáfér a munkamenet-tokenekhez, cookie-khoz és egyéb érzékeny adatokhoz.
Három típusa van webhelyek közötti szkriptek, amelyeket a hackerek a webhelyek feltörésére használnak: tükrözött, tárolt és DOM XSS.
Hogyan akadályozható meg a webhelyek közötti szkriptelés a Node-ban
Az alábbiakban felsorolunk néhány lépést, amelyekkel megakadályozhatja a helyek közötti parancsfájlokat a Node-ban.
Bemenet fertőtlenítése
A támadóknak képesnek kell lenniük arra, hogy adatokat küldjenek a webalkalmazásnak, és megjelenítsék azokat a felhasználónak ahhoz, hogy XSS-támadást hajtsanak végre. Ezért az első megelőző intézkedés, amelyet meg kell tennie, az az összes bemenet megtisztítása, amelyet az alkalmazás a felhasználóktól kap. Ez döntő fontosságú, mert észleli a hamis adatokat, mielőtt a szerver végrehajtaná azokat. Ezt megteheti manuálisan, vagy használhat egy hasonló eszközt érvényesítő ami felgyorsítja a folyamatot.
Használhatja például a érvényesítő hogy elkerülje a HTML-címkéket a felhasználói bevitelben az alábbiak szerint.
import érvényesítő tól től „ellenőrző”;
let userInput = `Jane <script onload="éber('XSS hack');"></script>`;
hagyja sanitizedInput = validator.escape (userInput);
Ha a fenti kódot futtatnád, a megtisztított kimenet ez lenne.
Jane < script onload=" éber('XSS feltörés');"></ forgatókönyv>
Felhasználói bevitel korlátozása
Korlátozza azt a beviteli módot, amelyet a felhasználó érvényesítéssel küldhet be az űrlapon. Például, ha van egy beviteli mezője egy e-mailhez, csak az e-mail formátumban engedélyezze a bevitelt. Így minimálisra csökkenti annak esélyét, hogy a támadók rossz adatokat küldjenek be. Ehhez használhatja a validátor csomagot is.
Végezze el a Csak HTTP-cookie-szabályzatot
A sütik a helyi gyorsítótárban tárolják az adatokat és küldje vissza a szerverre HTTP-n keresztül. A támadók azonban JavaScript segítségével is elérhetik őket a böngészőn keresztül, így könnyű célpontok.
A csak HTTP-alapú cookie egy olyan házirend, amely megakadályozza, hogy az ügyféloldali szkriptek hozzáférjenek a cookie-adatokhoz. Ez azt jelenti, hogy még ha az alkalmazás sebezhetőséget is tartalmaz, és a támadó kihasználja azt, nem férhet hozzá a cookie-hoz.
Íme egy példa arra, hogyan valósíthatja meg a csak HTTP-alapú cookie-házirendet a Node.js-ben Express használatával:
kb.használat(Expressz.ülés({
titok: "titok",
aprósütemény: {
Csak http: igaz,
biztonságos: igaz
}
}))
Ha egy támadó megpróbált hozzáférni a cookie-hoz a Csak http A címke igaz értékre állítva a fentiek szerint, akkor üres karakterláncot kapnak.
A webhelyek közötti szkriptelés egyszerű célpont a hackerek számára
Bár az alkalmazás biztonságának biztosítása kulcsfontosságú, megvalósítása bonyolult lehet. Ebből a bejegyzésből megtudhatta a helyek közötti parancsfájl-támadásokat, és azt, hogyan akadályozhatja meg őket a Node-ban. Mivel a támadók kihasználják az alkalmazás sebezhetőségét, hogy rosszindulatú kódot fecskendezzenek be a kiszolgálóba, mindig ügyeljen arra, hogy megtisztítsa a felhasználói bevitelt. Ezzel eltávolítja a rosszindulatú kódot, mielőtt az alkalmazás tárolná vagy végrehajtaná.