valerybrozhinsky - stock.adobe.c

Was ist die beste Methode zum Schutz vor XSS-Attacken?

Cross-Site Scripting ist und bleibt eine ernste Gefahr für Webapplikationen. Erfahren Sie hier, wie die Grundlagen dieser Attacken aussehen und was Sie dagegen unternehmen können.

XSS-Schwachstellen (Cross-Site Scripting beziehungsweise Webseiten-übergreifendes Scripting) sind ein relativ altes Problem, das aber immer noch weiter existiert. XSS-Attacken werden von Cyberangreifern schon seit etwa dem Jahr 2000 ausgenutzt.

Seit 2004 finden sie sich zudem auf der „OWASP Top 10“-Liste der gefährlichsten Bedrohungen für Anwendungen im Web. Aber trotzdem nehmen viele Entwickler, Systemadministratoren und sogar manche Penetrationstester die Gefahr durch XSS-Attacken nicht ernst genug. Um ein erfolgreicher Verteidiger – oder Hacker – von Webapplikationen zu werden, sollten Sie deswegen die Grundlagen der Abwehr von XSS-Attacken kennen.

XSS-Attacken sind immer noch ein Problem

Mit Cross-Site Scripting können Angreifer schädlichen Code im Browser eines Web-Surfers injizieren und ausführen, während er eine eigentlich harmlose Webapplikation nutzt.

Die Schwere und die Auswirkungen von erfolgreichen XSS-Attacken variieren stark. Sie können allerdings genutzt werden, um zum Beispiel eine fremde Session zu übernehmen, um Tokens oder Cookies zu stehlen oder um CSFR-Angriffe (Cross-Site Request Forgery) durchzuführen. Das führt dann unter anderem dazu, dass ein Nutzer-Account heimlich durch den Angreifer übernommen werden kann.

Eine erfolgreiche XSS-Attacke kann es einem Angreifer außerdem ermöglichen, sich mit Hilfe von gestohlenen oder gefälschten Cookies als ein legitimer Nutzer einer bestimmten Webapplikation auszugeben. Wenn der gehackte Nutzer außerdem über Admin-Rechte verfügt hat, kann sie der Angreifer dann verwenden, um die gesamte Webseite zu manipulieren oder um aus der Ferne seinen eigenen Code auf dem Applikationsserver auszuführen.

Arten von XSS-Attacken

Es gibt drei Arten von XSS-Attacken, die immer wieder auftauchen: Persistent, reflektiert oder DOM-basiert (Document Object Model).

  1. Bei einer persistenten XSS-Attacke fügt der Angreifer ein schädliches Skript in eine anfällige Webseite ein. Es wird jedes Mal ausgeführt, wenn das Opfer die Seite besucht. Persistente XSS-Attacken werden deswegen als am gefährlichsten eingestuft. Wenn ein Angreifer zum Beispiel ein schädliches Javascript in eine Webseite einfügt, dann speichert der Browser dieses Skript ab. Jedes Mal, wenn das Opfer die Seite dann besucht, wird das schädliche Skript ausgeführt.
  2. Bei einer reflektierten XSS-Attacke wird der Schadcode dagegen in einen Link eingebaut. Erst wenn der Anwender darauf klickt, wird der Code ausgeführt. Bei dieser Variante wird der Code also nicht abgespeichert, sondern auf der Webseite nur in Form einer URL oder einem POST dargestellt.
  3. Von einer DOM-basierten XSS-Attacke spricht man, wenn das Document Object Model genutzt wird, um dynamische Inhalte zu generieren. Die Eingaben des Nutzers werden dabei teilweise ohne weitere Überprüfung ausgeführt. Diese Art von Angriffen wird dann etwa als Javascript im Browser des Nutzers ausgeführt.

XSS-Attacken richtig stoppen

Um XSS-Attacken zu erschweren, sollten Entwickler die Eingaben der Anwender auf bestimmte Sonder- beziehungsweise Metazeichen filtern. Durch das Kodieren dieser Eingaben können sowohl persistente als auch reflektierte Attacken verhindert werden. Die folgenden Sonderzeichen sollten immer ausgefiltert werden, damit sie nicht für Attacken missbraucht werden können:

"

'

)

(

;

/

#

& 


Auch zum Schutz vor DOM-basierten XSS-Attacken müssen die Eingaben der Nutzer durch die Entwickler validiert und kodiert werden. Eine Stelle, an der schädliche Nutzereingaben übernommen werden können, wird als „Source“ bezeichnet, während eine Stelle, an der sie ausgeführt werden können, als „Sink“ bezeichnet wird. Die folgenden Source-Eigenschaften sollten deshalb nicht verwendet werden:

  • URL
  • documentURI
  • location
  • href
  • search
  • hash

Wie bereits erwähnt, ist ein Sink die Stelle, an der die schädlichen Zeichen ausgeführt und dann auf der Webseite dargestellt werden. Aus diesem Grund sollten die folgenden Sinks vermieden werden, um DOM-basierte XSS-Attacken zu erschweren.

  • InnerHTML
  • outerHTML
  • write

Wenn Sie sich intensiver mit der Materie beschäftigen und praxisbezogen lernen wollen, wie Sie XSS-Attacken verhindern, dann können Sie auf eine Ressource von Google zurückgreifen. Der Konzern bietet eine ähnlich wie ein Spiel aufgebaute Webseite an, auf der Sie erfahren können, wie gängige Angriffe funktionieren und wie sie verhindert werden können.

Das Mutillidae 2 Project von OWASP richtet sich ebenfalls an Web-Security-Spezialisten, die ihre Abwehrmaßnahmen gegen XSS-Attacken verbessern wollen.

Nächste Schritte

Was Unternehmen über Cross Site Scripting wissen sollten

Gratis-eBook: Das Risiko Webanwendungen absichern

Dem Risiko API-Sicherheit bei Webanwendungen begegnen

Erfahren Sie mehr über Bedrohungen