Cross-Site-Scripting (XSS) ist eine Art von Sicherheitslücke, die es Angreifern ermöglicht, mithilfe von Client-Code bösartige Skripts auf Websites einzuschleusen. Es stellt eine erhebliche Bedrohung dar, da Angreifer sich damit als Benutzer ausgeben, Zugriff auf vertrauliche Daten erlangen oder sogar die Seiteninhalte der Website ändern können.
Es ist so gefährlich, dass es 2021 auf Platz zwei der gemeinsamen Schwachstellenliste der 25 gefährlichsten Schwachstellen stand. Das bedeutet, wenn Sie Websites erstellen, müssen Sie sich mit Cross-Site-Scripting auskennen und wissen, wie Sie es verhindern können.
Wie funktioniert Cross-Site-Scripting?
Bevor Sie verstehen, wie Cross-Site-Scripting funktioniert, ist es wichtig zu wissen, was die Same-Origin-Policy (SOP) bedeutet. SOP ist eine Richtlinie für einen Sicherheitsmechanismus, die eine Website (eines Ursprungs) daran hindert, auf einer anderen Website (eines anderen Ursprungs) zu lesen oder zu schreiben. Es verhindert, dass bösartige Websites bösartigen Code an vertrauenswürdige Websites senden.
Cross-Site-Scripting-Angriffe versuchen, diese Richtlinie zu umgehen, indem sie die Unfähigkeit des Browsers ausnutzen, zwischen legitimem HTML und bösartigem Code zu unterscheiden. Beispielsweise kann ein Angreifer JavaScript-Code in die Zielwebsite einschleusen. Angenommen, der Browser führt den Code aus und der Angreifer erhält Zugriff auf Sitzungstoken, Cookies und andere sensible Daten.
Es gibt drei Arten von Cross-Site-Scripting, mit dem Hacker Websites beschädigen: reflektiert, gespeichert und DOM XSS.
So verhindern Sie Cross-Site-Scripting in Node
Im Folgenden finden Sie einige Schritte, die Sie unternehmen können, um Cross-Site-Scripting in Node.
Eingabe bereinigen
Angreifer müssen in der Lage sein, Daten an Ihre Webanwendung zu senden und einem Benutzer anzuzeigen, um einen XSS-Angriff durchzuführen. Daher ist die erste vorbeugende Maßnahme, die Sie ergreifen müssen, alle Eingaben zu bereinigen, die Ihre Anwendung von ihren Benutzern erhält. Dies ist entscheidend, da es die gefälschten Daten erkennt, bevor der Server sie ausführt. Sie können dies manuell tun oder ein Tool wie verwenden Prüfer was den Vorgang beschleunigt.
Sie können zum Beispiel die verwenden Prüfer um HTML-Tags in Benutzereingaben wie unten zu maskieren.
importieren Prüfer aus "Prüfer";
let userInput = `Jane <script onload="Alarm('XSS-Hack');"></script>`;
Lassen sanitizedInput = validator.escape (Benutzereingabe);
Wenn Sie den obigen Code ausführen würden, wäre die bereinigte Ausgabe dies.
Jane < script onload=&Quot; Alarm('XSS-Hack');&Quot;></ Skript>
Beschränken Sie die Benutzereingabe
Schränken Sie die Art der Eingabe ein, die ein Benutzer in Ihrem Formular durch Validierung übermitteln kann. Wenn Sie beispielsweise ein Eingabefeld für eine E-Mail haben, lassen Sie nur Eingaben im E-Mail-Format zu. Auf diese Weise minimieren Sie die Wahrscheinlichkeit, dass Angreifer fehlerhafte Daten übermitteln. Sie können dafür auch das Validator-Paket verwenden.
Implementieren Sie die Nur-HTTP-Cookie-Richtlinie
Cookies speichern Daten in einem lokalen Cache und über HTTP an den Server zurücksenden. Aber Angreifer können auch per JavaScript über den Browser darauf zugreifen, sodass sie leichte Ziele sind.
Das Nur-HTTP-Cookie ist eine Richtlinie, die verhindert, dass clientseitige Skripts auf Cookie-Daten zugreifen. Das bedeutet, dass selbst wenn Ihre Anwendung eine Schwachstelle enthält und ein Angreifer diese ausnutzt, sie nicht auf das Cookie zugreifen können.
Hier ist ein Beispiel dafür, wie Sie die Nur-HTTP-Cookie-Richtlinie in Node.js mit Express implementieren können:
App.verwenden(ausdrücken.Sitzung({
Geheimnis: "Geheimnis",
Plätzchen: {
Nur http: Stimmt,
sicher: Stimmt
}
}))
Wenn ein Angreifer versucht, mit der httpNur tag wie oben auf true gesetzt, würden sie eine leere Zeichenkette erhalten.
Cross-Site Scripting ist ein leichtes Ziel für Hacker
Während die Gewährleistung der Sicherheit Ihrer Anwendung von entscheidender Bedeutung ist, kann die Implementierung kompliziert werden. In diesem Beitrag haben Sie Cross-Site-Scripting-Angriffe kennengelernt und wie Sie sie in Node. Da Angreifer Schwachstellen in Ihrer Anwendung ausnutzen, um bösartigen Code in Ihren Server einzuschleusen, stellen Sie immer sicher, dass Sie Benutzereingaben bereinigen. Auf diese Weise entfernen Sie den Schadcode, bevor Ihre Anwendung ihn speichert oder ausführt.