
Wie lassen sich Cross-Site-Scripting-Angriffe (XSS) verhindern?
Erfahren Sie, wie Sie XSS-Angriffe verhindern, Schwachstellen finden und verborgene Bedrohungen beseitigen. Unser Leitfaden erklärt die Grundlagen zur Verhinderung von Cross-Site-Scripting-Angriffen.

Nach den jüngsten Cross-Site-Scripting-Schwachstellen (XSS) haben das FBI und CISA ihre Sicherheitsmaßnahmen verstärkt und die Cyberresilienz stärker in den Fokus gerückt. Dennoch versäumen es Unternehmen häufig, grundlegende Sicherheitsmaßnahmen umzusetzen. So kommt es zu Datenschutzverletzungen.
Cross-Site-Scripting-Angriffe entstehen, wenn Webanwendungen und -dienste Anfragen oder Eingaben nicht korrekt verarbeiten oder nicht wie vorgesehen funktionieren. Sie sind gefährlich, weil sie nicht nur Anwendungen treffen, sondern auch deren Nutzer.
Dieser Leitfaden erklärt Cross-Site-Scripting-Angriffe und was Sie darüber wissen sollten.
Was sind Cross-Site-Scripting-Angriffe (XSS)?
Keine Anwendung und keine Website ist perfekt. Manche Schwachstellen bleiben verborgen. Cross-Site-Scripting-Angriffe nutzen solche Schwachstellen aus, indem sie schädlichen Code einschleusen und Fehlfunktionen auslösen. Dadurch können Angreifer die Identität eines Opfers übernehmen und sich als diese Person ausgeben.
Das schädliche Skript verbirgt sich in der Webanwendung und ist daher schwer zu erkennen. Es fügt sich in den Quellcode der Anwendung ein. Dadurch können Dienste nicht feststellen, ob es aus einer nicht vertrauenswürdigen Quelle stammt. Was ist die Folge?
Angreifer erhalten Zugriff auf Cookies, Website-Token und andere sensible Daten, die Ihr Webbrowser erfasst. Wenn Ihre Website oder Anwendung Inhalte an verschiedene Stellen ausliefert, können Angreifer auch diese abfangen. Onlineforen und Kommentarbereiche, in denen Nutzer Beiträge kommentieren können, sind ebenfalls anfällig.
Arten von Cross-Site-Scripting-Angriffen (XSS)
XSS-Schwachstellen wurden bereits zur Verbreitung von Würmern genutzt und haben Sicherheitsmaßnahmen von Anwendungen untergraben. Angreifer können darüber Malware verbreiten, Zugangsdaten per Phishing stehlen und Websites von Verteidigungsorganisationen übernehmen.
Es gibt drei Hauptarten von Cross-Site-Scripting-Angriffen (XSS). Bevor Sie erfahren, wie Sie XSS-Angriffe verhindern, sollten Sie die Bedrohungen kennen. Das sind die drei Arten.
1. Gespeichertes XSS (persistentes XSS)
Dies ist eine der einfachsten, aber gefährlichsten Formen von XSS. Bei gespeichertem XSS wird schädlicher Code in Webdatenbanken gespeichert, wenn Eingaben nicht ausreichend validiert werden. Der Angreifer schleust den Code über eine Schwachstelle der Webanwendung ein und speichert ihn dauerhaft. Das Opfer kann das Skript unwissentlich ausführen, wenn der Webbrowser die Nutzlast als HTML-Code erhält. Sobald das Opfer die Webseite lädt und damit das schädliche Skript ausführt, ist der Angriff erfolgreich.
Ein klassisches Beispiel ist ein Kommentar zu einem Blogbeitrag. Der Angreifer kann eine URL hinzufügen und das Opfer dazu bringen, den Kommentar anzuklicken. Bei dieser Interaktion wird der Code automatisch ausgeführt.
2. Reflektiertes XSS (nicht persistentes XSS)
Ein reflektierter XSS-Angriff liegt vor, wenn die Nutzlast eines Angreifers Teil der Antwort an den Webbrowser wird. Der Server gibt die Nutzlast aus der HTTP-Anfrage in seiner HTTP-Antwort zurück. Angreifer können Social Engineering, schädliche Links und andere Phishing-Taktiken einsetzen, um Opfer zu Serveranfragen zu verleiten. Allerdings muss der Angreifer jedem Opfer eine eigene Nutzlast zustellen. Eine massenhafte Zustellung ist nicht möglich. Die meisten reflektierten XSS-Angriffe erfolgen über soziale Netzwerke.
3. DOM-basiertes XSS
Bei DOM-basiertem XSS werden Benutzerkonten kompromittiert, indem bösartiger JavaScript-Code aus einer vom Angreifer kontrollierbaren Quelle übernommen wird. Der Code wird an eine Sink übergeben, die ihn dynamisch ausführt und den Codeblock beliebig ablaufen lässt. Die Browser-URL ist die häufigste Quelle für diese Cross-Site-Scripting-Angriffe. Der Angreifer fügt außerdem einen Link hinzu, der Opfer auf anfällige Seiten mit in Query-Strings eingebetteten Payloads leitet. Er kann auch Teile der URL fragmentieren und Opfer durch Irreführung weiter manipulieren.
Wie funktioniert Cross-Site-Scripting (XSS)?
Beim Cross-Site-Scripting manipulieren Angreifer anfällige Websites, sodass diese schädlichen JavaScript-Code an Nutzer ausliefern. Schleusen Angreifer den Code ein und führen ihn im Browser des Opfers aus, können sie dessen Anwendungen und die anschließenden Interaktionen vollständig kompromittieren.
Cross-Origin-Iframes lassen Nutzer die Alert-Funktion nicht aufrufen. Sie kommen bei einigen komplexeren XSS-Angriffen zum Einsatz. Angreifer können außerdem Berechtigungen und Nutzerzugriffe innerhalb von Webanwendungen kontrollieren und auf die darin gespeicherten Daten zugreifen.
Cross-Site-Scripting-Angriffe und -Schwachstellen können es Angreifern gestatten, sich im gesamten Netzwerk als das Opfer auszugeben. Sie können Same-Origin-Richtlinien umgehen, die verschiedene Websites voneinander trennen.
So läuft ein Cross-Site-Scripting-Angriff vereinfacht ab:
- Der Angreifer sendet Ihnen einen schädlichen Link. Wenn Sie darauf klicken, wird der Code eingeschleust und der dynamische Inhalt an den Webbrowser ausgeliefert.
- Der Browser sendet eine HTTP-Anfrage an den Webserver des Angreifers. Dieser kann anschließend Ihre gestohlenen Cookies nutzen, um sich als Sie auszugeben.
- Angreifer können auf sensible Informationen zugreifen und komplexere Social-Engineering-Angriffe durchführen.
- Cross-Site-Scripting-Angriffe umgehen Same-Origin-Richtlinien, die Websites voneinander trennen sollen. Solche Angriffe können dem Ruf Ihres Unternehmens erheblich schaden. Angreifer können die Inhalte Ihrer Website verändern und so das Ansehen Ihres Unternehmens beschädigen.
- Sie können Falschinformationen verbreiten, Anweisungen für Nutzer auf Ihren Websites ändern und Nutzer in die Irre führen.
XSS-Angriffe sind besonders gefährlich, wenn sie Behörden, Gesundheitseinrichtungen oder Unternehmen treffen, die in Krisenzeiten lebenswichtige Ressourcen bereitstellen.
Wie lassen sich Cross-Site-Scripting-Angriffe (XSS) verhindern?
Es gibt verschiedene Ansätze. Erfahren Sie, wie Sie Cross-Site-Scripting-Angriffe verhindern:
- Die Validierung von Eingaben in Webanwendungen und -diensten kann Cross-Site-Scripting-Angriffe (XSS) verhindern. Mit einem Schwachstellenscanner können Sie Ihre Websites zudem auf weitere Sicherheitslücken prüfen. Das ist eine der besten Möglichkeiten, XSS-Angriffe automatisiert zu verhindern.
- Ein zweiter Ansatz zur Verhinderung von XSS-Angriffen ist die Kodierung von Daten bei der Ausgabe. Idealerweise geschieht dies, bevor Sie die Daten auf einer Seite ausgeben. Welche Kodierung nötig ist, hängt vom jeweiligen Kontext ab.
- JavaScript-Zeichenfolgen benötigen beispielsweise eine andere Kodierung als Werte in einem HTML-Kontext. Im HTML-Kontext müssen Sie Werte, die nicht auf der Positivliste stehen, in HTML-Entities umwandeln. In JavaScript-Zeichenfolgen müssen Sie für nicht alphanumerische Werte dagegen Unicode-Escaping verwenden.
- Mehrere Kodierungsschichten können nötig sein. Dabei kommt es auf die richtige Reihenfolge an. Sie müssen Nutzereingaben in Event-Handler einbetten und sowohl den HTML- als auch den JavaScript-Kontext berücksichtigen. Eingaben lassen sich beim Eingang auf verschiedene Weise validieren.
- Wenn ein Nutzer beispielsweise eine URL eingibt, die in einer Antwort zurückgegeben wird, können Sie prüfen, ob sie mit einem sicheren Protokoll wie HTTPS oder HTTP beginnt. Sie können auch prüfen, ob die Eingabe nur aus Buchstaben oder Zahlen besteht. Eine weitere Möglichkeit ist, die Eingabe auf einen festgelegten Zeichensatz zu beschränken.
Weitere Ansätze sind:
- Sie können eine Liste aller sicheren Protokolle erstellen, die auf Ihrer Website zulässig sind. Ihre Sicherheitsmaßnahmen blockieren dann standardmäßig schädliche Protokolle, die nicht auf der Liste stehen. So können XSS-Angriffe ungültige Werte nicht durch Umgehung von Sperrlisten verschleiern.
- Nutzer sollten kein HTML-Markup veröffentlichen dürfen. Manchmal ist es jedoch erforderlich. Mit Positivlisten können Sie schädliche Tags herausfiltern. Zulässige Tags bleiben erhalten, während schädlicher Code in gesperrten Tags herausgefiltert wird. Alle Tags außerhalb Ihrer Positivlisten gelten als gesperrt, sofern Sie sie nicht ausdrücklich zulassen.
- Sie müssen Ihre Website auf Sicherheitsupdates überwachen. Wenn Sie JavaScript-Bibliotheken für die Filterung und Kodierung direkt im Browser der Nutzer einsetzen möchten, können Sie XSS-Angriffe auch mit einer serverseitigen Template-Engine verhindern. Diese kann dynamische Inhalte in HTML einbetten und bestimmten Code definieren.
- Sie können auch Filter mit Argumenten verwenden und den Kontext definieren. Damit lassen sich die meisten XSS-Angriffe verhindern. Prüfen Sie diese Escaping-Funktionen regelmäßig, um zu entscheiden, ob Sie die Template-Engine oder das Framework weiterverwenden.
- PHP bietet integrierte Funktionen zur Kodierung von Entities. Damit können Sie Eingaben maskieren, wenn sich Ihre Werte in einem HTML-Kontext befinden. Sie können diese Funktionen mit drei Argumenten aufrufen und müssen für Eingaben Unicode-Escaping verwenden. PHP stellt keine APIs für Unicode-Escaping von Zeichenfolgen bereit.
- Wandeln Sie Ihre Zeichenfolgen in HTML-Entities um und rufen Sie dann die Funktionen auf. Mit einem eigenen HTML-Encoder können Sie clientseitige JavaScript-XSS-Angriffe verhindern.

Verbessern Sie Ihre Threat Intelligence
Erfahren Sie, wie der SentinelOne-Service WatchTower zur Bedrohungssuche mehr Erkenntnisse liefert und Ihnen hilft, Angriffe abzuwehren.
Cross-Site-Scripting-Angriffe (XSS): Tipps zur Prävention (Best Practices)
Mit diesen Best Practices können Sie XSS-Angriffen vorbeugen:
- Bereinigen Sie Benutzereingaben und Ausgabedaten durch Kodierung.
- Sie können Sonderzeichen durch kodierte Werte ersetzen. So werden alle Daten als Text statt als Code verarbeitet. Angreifer können dann keine schädlichen Skripte einschleusen, wenn sie nur mit reinem Text arbeiten. Bei korrekter Kodierung sind Benutzer auf diesem Weg nicht betroffen.
- Je nach Geschäftslogik, Anwendungstyp und Art der gespeicherten und verarbeiteten Daten können Sie unterschiedliche Kodierungsarten einsetzen. Dazu gehört etwa die Kodierung von HTML-Entitäten, eine der grundlegendsten Maßnahmen. Auch Attributwerte lassen sich kodieren.
- Eine weitere bewährte Maßnahme gegen XSS-Angriffe ist das Filtern der clientseitig empfangenen Daten. Dabei werden gefährliche Elemente wie Tags, HTML-Event-Handler und schädliche JavaScript-Elemente entfernt.
- Sie können Antworten von Webseiten zurückgeben und dabei sowohl Eingaben als auch Ausgaben filtern. Diese Methode eignet sich besonders gut, um gespeicherte XSS-Angriffe einzudämmen.
- Auch die Validierung von Benutzereingaben erhöht die Sicherheit. Wenn Sie Eingabefelder beispielsweise standardmäßig auf Textdaten beschränken, können Benutzer keine Zahlen eingeben. Bei Webformularen können Eingaben validiert werden, um zu verhindern, dass Angreifer über die Autorisierung schädliche Skripte hochladen. Webbrowser erlauben nur den Zugriff auf zugelassene Ressourcen und ignorieren alle anderen Domains. Eingeschleuste Skripte werden nicht ausgeführt, selbst wenn ein Angreifer eine XSS-Schwachstelle entdeckt.
- Um Cross-Site-Scripting-Angriffe in jQuery zu verhindern, können Sie Benutzereingaben an einen jQuery-Selektor übergeben. Üblicherweise wird dazu location. Hash verwendet und der Selektor zur Darstellung von HTML übergeben. jQuery kann das Problem erkennen und die Selektorlogik so anpassen, dass sie prüft, ob Eingaben mit einem Hash-Zeichen beginnen.
- Sie können festlegen, welche Ressourcen, etwa Bilder und Skripte, vom Ursprung der Website geladen werden dürfen. Schleust ein Angreifer XSS-Payloads ein, kann er keine Ressourcen außerhalb des aktuellen Ursprungs laden. Der jQuery-Selektor kann das Risiko eines XSS-Angriffs oder einer XSS-Schwachstelle deutlich verringern.
Wenn Sie nicht vertrauenswürdige Daten an Ihre jQuery-Selektoren übergeben, müssen Sie die Werte mit der Funktion js—escape korrekt maskieren. Auch Content-Security-Policies können XSS-Angriffe eindämmen. Damit steuern Sie verschiedene Aspekte der Verwaltung externer Skripte, etwa deren Laden und die Ausführung von Inline-Skripten.
Häufige Beispiele für XSS-Angriffe
Hier sind einige Beispiele für XSS-Angriffe aus der Praxis:
- British Airways wurde 2018 von MageCart angegriffen, einer bekannten Hackergruppe. Die Gruppe nutzte eine XSS-Schwachstelle in der JavaScript-Bibliothek aus. Kundendaten wurden an einen schädlichen Server gesendet, dessen Domainname dem der offiziellen Website ähnelte. So wurden bei mehr als 380.000 Buchungstransaktionen Kreditkartendaten abgegriffen. Der Fluggesellschaft entstand ein hoher finanzieller Schaden, bevor die Sicherheitsverletzung entdeckt wurde.
- Fornite ist ein beliebtes Online-Multiplayer-Spiel, das von einem XSS-Angriff betroffen war. Eine SSO-Schwachstelle leitete Benutzer auf eine gefälschte Anmeldeseite um, auf der ihre Zugangsdaten gestohlen wurden. Spieler verloren zudem virtuelle Währungen im Spiel und aufgezeichnete Spielchats wurden veröffentlicht.
- Bei eBay gab es eine XSS-Schwachstelle, über die Angreifer vollständigen Zugriff auf Verkäuferkonten erlangten. Die Angreifer manipulierten die Platzierung von eBay-Angeboten und setzten ihre Angriffe fort, selbst nachdem eBay die Schwachstelle entdeckt und behoben hatte.
Fazit
Cross-Site-Scripting-Angriffe zählen zu den schwerwiegendsten Bedrohungen für die Websicherheit. Sie untergraben das Vertrauen in Online-Plattformen und gefährden Benutzerdaten. Wenn Entwickler die verschiedenen Arten von XSS-Angriffen kennen und geeignete Schutzmaßnahmen umsetzen, sichern sie ihre Anwendungen ab. Dazu gehören die Validierung von Eingaben, die Kodierung von Ausgaben und Content-Security-Policies.
Sicherheitsaudits und leistungsfähige Tools zur Bedrohungserkennung sind entscheidend für eine sichere Online-Präsenz. Mit dem technologischen Fortschritt entwickeln auch Angreifer ihre Methoden weiter. Wachsamkeit bleibt daher unerlässlich. Wer XSS-Prävention priorisiert, schützt den Ruf seines Unternehmens und die Integrität seiner Online-Präsenz.
"Häufig gestellte Fragen
Bei XSS-Angriffen werden schädliche Skripte in Websites eingeschleust, damit Angreifer auf sensible Benutzerdaten zugreifen können. XSS-Angriffe nutzen Schwachstellen in Webanwendungen aus und setzen häufig Benutzereingaben oder manipulierte URLs ein.
Entwickler können XSS-Angriffe vermeiden, indem sie Benutzereingaben prüfen, Ausgabedaten kodieren und nur schädliche Skripte zulassen. Regelmäßige Sicherheitsaudits und Content-Security-Policies verringern ebenfalls die Risiken.
XSS-Angriffe schleusen schädliche Skripte in Webanwendungen ein. Diese werden in den Browsern der Benutzer ausgeführt, umgehen Sicherheitskontrollen und greifen auf sensible Informationen zu.
XSS muss verhindert werden, weil es zu Datenlecks, finanziellen Verlusten und Reputationsschäden führen kann. Es untergräbt zudem das Vertrauen der Benutzer und kann Malware oder Phishing-Angriffe verbreiten.
Dazu gehören Schwachstellenscanner, Web Application Firewalls und fortschrittliche Systeme zur Bedrohungserkennung. Sie erkennen Schwachstellen und blockieren die Ausführung schädlicher Skripte.
Ja. Eine WAF kann XSS-Angriffe blockieren, indem sie den Datenverkehr filtert und schädliche Skripte erkennt, bevor diese mit der Anwendung interagieren.
Bei XSS-Tests werden Schwachstellenscanner und Penetrationstesting-Tools eingesetzt, um Angriffe zu simulieren und mögliche Einfallstore für schädliche Skripte zu finden.
Zum Schutz vor sich weiterentwickelnden Bedrohungen sollten Sicherheitsprüfungen auf XSS-Schwachstellen regelmäßig stattfinden, idealerweise alle drei Monate.



