Cross-site scripting (XSS) on eräänlainen tietoturvan hyväksikäyttö, jonka avulla hyökkääjät voivat lisätä haitallisia komentosarjoja verkkosivustoille asiakaskoodin avulla. Se muodostaa merkittävän uhan, koska hyökkääjät voivat käyttää sitä esiintyäkseen käyttäjinä, päästäkseen käsiksi arkaluonteisiin tietoihin tai jopa muuttaakseen verkkosivuston sivun sisältöä.
Se on niin vaarallista, että vuonna 2021 se oli toisella sijalla 25 vaarallisimman heikkouden yleisen heikkouden luettelossa. Tämä tarkoittaa, että jos luot verkkosivustoja, sinun on tiedettävä sivustojen välinen komentosarja ja kuinka estää se.
Kuinka sivustojen välinen komentosarja toimii?
Ennen kuin ymmärrät, kuinka sivustojen välinen komentosarja toimii, on tärkeää tietää, mitä saman alkuperän käytäntö (SOP) tarkoittaa. SOP on turvamekanismikäytäntö, joka rajoittaa verkkosivustoa (yksi alkuperä) lukemasta tai kirjoittamasta toiselle verkkosivustolle (eri alkuperä). Se estää haitallisia verkkosivustoja lähettämästä haitallista koodia luotettaville verkkosivustoille.
Sivustojen väliset komentosarjahyökkäykset yrittävät ohittaa tämän käytännön hyödyntämällä selaimen kyvyttömyyttä erottaa aito HTML-koodi haitallisesta koodista. Hyökkääjä voi esimerkiksi pistää JavaScript-koodin kohdesivustoon. Oletetaan, että selain suorittaa koodin ja hyökkääjä pääsee käsiksi istuntotunnuksiin, evästeisiin ja muihin arkaluontoisiin tietoihin.
Niitä on kolmenlaisia sivustojen välinen komentosarja, jota hakkerit käyttävät verkkosivustojen rikkomiseen: heijastuu, tallennettu ja DOM XSS.
Sivustojen välisen komentosarjan estäminen Nodessa
Seuraavassa on joitain vaiheita, joilla voit estää sivustojen välisen komentosarjan Nodessa.
Puhdista syöttö
Hyökkääjien on voitava lähettää tietoja verkkosovellukseesi ja näyttää ne käyttäjälle XSS-hyökkäyksen suorittamiseksi. Siksi ensimmäinen ennaltaehkäisevä toimenpide, joka sinun on toteutettava, on puhdistaa kaikki sovelluksesi käyttäjiltä saamasi tiedot. Tämä on tärkeää, koska se havaitsee väärät tiedot ennen kuin palvelin suorittaa sen. Voit tehdä tämän manuaalisesti tai käyttää esim. työkalua validaattori mikä nopeuttaa prosessia.
Voit käyttää esimerkiksi validaattori välttääksesi HTML-tageja käyttäjän syötteessä, kuten alla.
tuonti validaattori alkaen "validaattori";
anna userInput = `Jane <script onload="hälytys ('XSS-hakkerointi');"></script>`;
päästää sanitizedInput = validator.escape (userInput);
Jos suorittaisit yllä olevan koodin, desinfioitu tulos olisi tämä.
Jane < script onload=" hälytys ('XSS-hakkerointi');"></ käsikirjoitus>
Rajoita käyttäjän syötteitä
Rajoita syötteiden tyyppiä, jonka käyttäjä voi lähettää lomakkeellesi vahvistuksen avulla. Jos sinulla on esimerkiksi sähköpostin syöttökenttä, salli syöttö vain sähköpostimuodossa. Tällä tavalla minimoit mahdollisuudet, että hyökkääjät lähettävät huonoja tietoja. Voit käyttää tähän myös validaattoripakettia.
Ota käyttöön vain HTTP-evästekäytäntö
Evästeet tallentavat tiedot paikalliseen välimuistiin ja lähetä se takaisin palvelimelle HTTP: n kautta. Mutta hyökkääjät voivat myös käyttää JavaScriptiä päästäkseen niihin selaimen kautta, joten he ovat helppoja kohteita.
Vain HTTP-eväste on käytäntö, joka estää asiakaspuolen komentosarjoja pääsemästä evästetietoihin. Tämä tarkoittaa, että vaikka sovelluksesi sisältäisi haavoittuvuuden ja hyökkääjä hyödyntäisi sitä, he eivät pääse käsiksi evästeeseen.
Tässä on esimerkki siitä, kuinka voit ottaa käyttöön vain HTTP-evästekäytännön Node.js: ssä Expressin avulla:
sovellus.käyttää(ilmaista.istunto({
salaisuus: "salaisuus",
eväste: {
httpVain: totta,
turvallinen: totta
}
}))
Jos hyökkääjä yritti päästä evästeeseen Vain http -tunnisteen arvoksi asetettu tosi, kuten yllä on esitetty, ne saavat tyhjän merkkijonon.
Cross-Site Scripting on helppo kohde hakkereille
Vaikka sovelluksesi turvallisuuden varmistaminen on ratkaisevan tärkeää, sen toteuttaminen voi olla monimutkaista. Tässä viestissä opit sivustojen välisistä komentosarjahyökkäyksistä ja kuinka voit estää ne Nodessa. Koska hyökkääjät käyttävät hyväkseen sovelluksesi haavoittuvuuksia syöttääkseen haitallista koodia palvelimellesi, varmista aina, että puhdistat käyttäjän syöttämät tiedot. Tekemällä tämän poistat haitallisen koodin ennen kuin sovellus tallentaa sen tai suorittaa sen.