Erstelle eine App in Angular, um die Verwundbarkeit mit deaktivierter strikter kontextbezogener Flucht zu demonstrieren. Diese App sollte das deaktivieren und Ihnen ermöglichen, einen XSS-Angriff auf die Website durchzuführen.
Eine XSS-Verwundbarkeit ist eine Injektionsverwundbarkeit, bei der der Angreifer bösartige Daten in eine Webanwendung einfügt. Die bösartig eingefügten Daten werden vom Browser erkannt, der die Daten als Code interpretiert. Dadurch wird das injizierte Payload des Angreifers als legitimer Anwendungscode ausgeführt, wodurch der Angreifer die volle Kontrolle über die Anwendung im Browser des Benutzers erhält.

Das nachstehende Codebeispiel veranschaulicht ein klassisches Beispiel für eine XSS-Verwundbarkeit und einen Angriff.

Eine DOM-XSS-Verwundbarkeit in einer jQuery-Anwendung

<div id="messageContainer"></div>
<script>
...
$("#messageContainer").append(myMessage);
...
</script>
Eine bösartige Nachricht mit einem JavaScript-Payload

Hallo John!<script>alert("Lass uns Verstecken spielen!")</script>
Wenn diese Daten in die Seite eingefügt werden, führt der Browser das Skript in der Nachricht aus und löst den Warnhinweisdialog aus. Das Beispiel ruft hier die Funktion alert() auf, was wahrscheinlich die harmloseste Auswirkung eines XSS-Angriffs ist. Aber keine Illusionen. In Wirklichkeit können Angreifer sensible Daten von den Seiten stehlen, Benutzereingaben abfangen, um Passwörter oder Kreditkarteninformationen zu stehlen, und sogar Anfragen an Server senden, als ob die legitime Anwendung selbst sie sendet. Sobald ein Angreifer erfolgreich eine XSS-Verwundbarkeit ausnutzt, sollte die gesamte Ausführungsumgebung der Anwendung im Browser als kompromittiert betrachtet werden.

Die beste Verteidigung gegen XSS-Angriffe besteht darin, sicherzustellen, dass der Browser Daten niemals als Code betrachtet. Ein häufiger Ansatz, dies zu erreichen, besteht darin, eine kontextsensitive Ausgabeverschlüsselung anzuwenden. Die kontextsensitive Ausgabeverschlüsselung stellt sicher, dass die Daten für den Kontext, in dem sie in der Seite landen, verschlüsselt werden. Während der Verschlüsselung werden potenziell gefährliche Zeichen in harmlose Gegenstücke übersetzt. Durch diese Übersetzung sieht der Browser diese Zeichen als Daten anstelle von Code, was die Verwirrung vermeidet und den Angriff verhindert.

Im Folgenden finden Sie ein Beispiel für die Auswirkungen der Anwendung einer kontextsensitiven Ausgabeverschlüsselung auf Daten, die ein bösartiges Payload enthalten.

Eine bösartige Nachricht mit einem JavaScript-Payload, der jedoch ordnungsgemäß verschlüsselt ist, um XSS zu vermeiden

Hallo John!&lt;script&gt;alert("Lass uns Verstecken spielen!")&lt;/script&gt;
Wie Sie sehen können, wird der Browser jetzt angewiesen, die HTML-Codes &lt; und &gt; zu rendern, die die Zeichen < und > anzeigen. Da dies eindeutig Daten sind, wird der Browser die Daten nicht mit Code verwechseln.