So verhindern Sie Cross-Site-Scripting-Angriffe (XSS)

Entdecken Sie wirksame Methoden, um Cross-Site-Scripting-Angriffe zu verhindern und Ihre Website sicher zu halten. Erfahren Sie, wie Sie sich effektiv gegen XSS-Schwachstellen schützen.

Verfasst von
Kathryn Timonera
Kathryn Timonera
Aug 3, 2023
10 minute read
eSecurity Planet Inhalte und Produktempfehlungen sind redaktionell unabhängig. Wir können Geld verdienen, wenn Sie auf Links zu unseren Partnern klicken. Mehr erfahren

Schwachstellen durch Cross-Site-Scripting (XSS) sind auf Websites und in Webanwendungen allzu häufig. Dadurch erhalten Hacker zahlreiche Möglichkeiten, XSS-Angriffe zu starten und Benutzerdaten zu stehlen, indem sie schädliche Skripte in Online-Seiten einschleusen.

Hier sehen wir uns an, wie XSS-Angriffe funktionieren, welche wichtigen Schritte bei Programmierung, Prävention und Sicherheit erforderlich sind und welche Produkte für die Anwendungssicherheit den XSS-Schutz erleichtern können.

Direkt zu:

Wie funktioniert Cross-Site-Scripting (XSS)?

Cross-Site-Scripting-Angriffe erfolgen, wenn Hacker unsichere Validierungs- und Kodierungspraktiken von Webanwendungen ausnutzen, um schädliche Skripte in den Browser eines Opfers einzuschleusen. Dies kann zur Übernahme von Konten, zur Weiterleitung auf eine schädliche Website oder zu anderen schädlichen Aktivitäten führen. Ist eine Website für XSS-Angriffe anfällig, wird die Eingabe des Benutzers als Code ausgeführt.

So erstellt und injiziert ein Angreifer schädlichen Code in eine anfällige Website:

  1. Erstellung des schädlichen Codes: Nachdem der Angreifer über Scannen nach Schwachstellen, die Enumeration von Subdomains und andere Techniken eine anfällige Website gefunden hat, erstellt er in der Regel in JavaScript schädlichen Code, um Schwachstellen auf der Zielwebsite auszunutzen.
  2. Code-Injektion: Nachdem der schädliche Code vorbereitet wurde, schleust der Angreifer ihn in die anfällige Website ein, indem er ein ausführbares Skript mit schädlichem Code verändert.
  3. Angriff starten: Wenn eine Person eine gehackte Website besucht, wird der schädliche Code automatisch im Browser dieser Person ausgeführt.
  4. Cookie-Diebstahl: Während der schädliche Code ausgeführt wird, kann er Token, Cookies und andere sensible Daten des Benutzers stehlen.
  5. Unbefugter Zugriff: Mit den gestohlenen Daten erhält der Angreifer ohne Autorisierung Zugriff auf die Sitzung oder das Konto des Benutzers.
Advertisement

So verhindern Sie Cross-Site-Scripting-Angriffe

Glücklicherweise können gute Programmierpraktiken das Risiko von XSS-Angriffen mindern. Hier sind einige Programmiertechniken und Präventionsmaßnahmen, mit denen Sie Ihre Webanwendungen gegen XSS-Angriffe schützen können. Durch geeignete Techniken zur Eingabevalidierung und Ausgabekodierung stärken Sie die Sicherheit Ihrer Website und ermöglichen eine sichere Benutzererfahrung.

Variablenvalidierung

Bei der Variablenvalidierung wird geprüft, ob eine Eingabe die gewünschten Kriterien erfüllt. Dadurch lässt sich verhindern, dass schädliche Informationen in Ihrer Anwendung Schaden anrichten, da nur sichere und korrekt strukturierte Daten durchgelassen werden.

Verwenden Sie beispielsweise Filter oder reguläre Ausdrücke, um sicherzustellen, dass eine E-Mail-Adresse dem erwarteten Format entspricht. Führen Sie keine sensiblen Vorgänge durch und benachrichtigen Sie den Benutzer, wenn die Eingabe nicht dem erwarteten Format entspricht.

PHP-Beispiel:

//This code assumes we are receiving an email address input
$userEmail = $_POST['email'];

// Validate the email using a filter to ensure it's in a proper email format
if (filter_var($userEmail, FILTER_VALIDATE_EMAIL)) {
    // Email is valid, proceed with further processing
    // ...
} else {
    // Invalid email format, handle the error appropriately
    // ...
}

Ausgabekodierung

Eine weitere Möglichkeit, sich gegen XSS-Angriffe zu schützen, ist die Ausgabekodierung. Wenn Sie dynamische Inhalte auf Ihrer Website anzeigen, etwa Benutzerkommentare oder Nachrichten, müssen Sie diese vor der Darstellung in HTML ordnungsgemäß kodieren. Bei der Kodierung werden Sonderzeichen in harmlose Entsprechungen umgewandelt, damit der Browser sie nicht als Code interpretiert.

Durch die Kodierung werden Skript-Tags in Benutzereingaben als normaler Text angezeigt und nicht als Skripte ausgeführt. OWASP bietet ein „Cheat Sheet“, das Entwicklern bei der sicheren Kodierung hilft; im Folgenden haben wir einige Programmierbeispiele übernommen.

Ausgabekodierung für HTML-Kontexte

Advertisement

Das Einfügen einer Variablen zwischen zwei einfachen HTML-Tags wie etwa:

<div> $varUnsafe </div>

kann dazu führen, dass als „$varUnsafe“ dargestellte Daten verändert werden, um einen Angriff in eine Webseite einzuschleusen. OWASP empfiehlt, Variablen beim Einfügen in eine Webvorlage mithilfe von HTML-Entities zu kodieren und für die Platzierung von Variablen „sichere Senken“ wie textContent zu verwenden.

Ausgabekodierung für HTML-Attributkontexte

Dabei werden Variablen zu HTML-Attributwerten für verschiedene Funktionen hinzugefügt, etwa zum Ändern von Hyperlinks, Ausblenden von Elementen, Hinzufügen von Alternativtext oder Ändern der Gestaltung.

Beispiel:

<div attr="$varUnsafe">
<div attr="*x" onblur="alert(1)*"> // Example Attack

Anführungszeichen (” und ‘) lassen sich nur schwer ändern, wenn eine Variable verwendet wird, und dies hilft, XSS-Angriffe zu verhindern. Bei der Verwendung von JavaScript kodieren .setAttribute und [attribute] automatisch HTML-Attribute und sind mit sicheren HTML-Attributen sicher.

Ausgabekodierung für JavaScript-Kontexte

In JavaScript-Kontexten werden Variablen in in ein HTML-Dokument eingebetteten Inline-JavaScript-Code eingefügt. Variablen sollten aus Sicherheitsgründen innerhalb eines in Anführungszeichen gesetzten Datenwerts in HTML-Seiten platziert werden.

Beispiel für „in Anführungszeichen gesetzte Datenwerte“:

<script>alert('$varUnsafe')</script>
<script>x='$varUnsafe'</script>
<div onmouseover="'$varUnsafe'"</div>

Zeichen sollten im Format \xHH kodiert werden. OWASP bietet einen Java-Encoder zur Unterstützung von Entwicklern. Bei JSON sollte der Content-Type-Header application/json und nicht text/html lauten.

Weitere Gefahren bei der Ausgabekodierung

Variablen in Inline-CSS müssen in einem CSS-Eigenschaftswert platziert werden. So können Benutzer das Erscheinungsbild ihrer Webseiten problemlos ändern, ohne die Sicherheit zu gefährden.

URLs sollten kodiert werden, gefolgt von einer Kodierung als HTML-Attribut. Wenn Sie JavaScript zum Erstellen eines URL-Abfragewerts verwenden, nutzen Sie window.encodeURIComponent(x).

OWASP weist außerdem auf mehrere „gefährliche Kontexte“ hin, die selbst bei Ausgabekodierung unsicher sind, darunter:

  • <script>Direkt in einem Skript</script>
  • <!– Innerhalb eines HTML-Kommentars –>
  • <style>Direkt in CSS</style>
  • <div ToDefineAnAttribute=test />
  • <ToDefineATag href=”/test” />
  • Callback-Funktionen
  • Im Code verarbeitete URLs
  • JavaScript-Event-Handler (onclick(), onerror(), onmouseover()).
  • Unsichere JS-Funktionen wie eval(), setInterval(), setTimeout()
Advertisement

HTML-Bereinigung 

Bei der HTML-Bereinigung werden Skripte oder Komponenten aus von Benutzern erzeugtem HTML entfernt, die eine Gefahr darstellen könnten. Bevor Benutzereingaben auf Ihrer Website angezeigt werden, dient die HTML-Bereinigung als Sicherheitsnetz, indem sie mögliche Risiken entfernt oder neutralisiert.

Bei einem Blogbeitrag mit HTML-Code filtert die HTML-Bereinigung beispielsweise gefährliche Komponenten oder Attribute heraus und stellt so sicher, dass den Benutzern nur unbedenkliches Material angezeigt wird. Dadurch gewährleisten Sie die Sicherheit Ihrer Website und schützen Benutzer vor potenziell gefährlichen Aktivitäten.

Die Verwendung renommierter und gut gepflegter Bibliotheken zur HTML-Bereinigung in Onlineanwendungen ist entscheidend. OWASP empfiehlt DOMPurify als nützliches Tool im Kampf gegen XSS-Angriffe.

Weitere XSS-Schutzmaßnahmen

Validierung, Kodierung und Bereinigung sind zentrale Techniken zur XSS-Prävention. Andere Maßnahmen können jedoch ebenfalls dazu beitragen, Schäden durch versehentliche Fehler zu begrenzen. Dazu gehören Cookie-Attribute, die festlegen, wie JavaScript und Browser mit Cookies interagieren dürfen, sowie eine Allowlist für eine Content-Security-Policy, die das Laden von Inhalten verhindert.

Lesen Sie auch:

3 Arten von Cross-Site-Scripting-Angriffen

Es gibt drei Arten von XSS-Angriffen, jeweils mit eigenen Angriffstechniken und Zielen. Im Folgenden gehen wir auf jede davon ausführlicher ein.

  • Gespeichertes XSS umfasst das Einschleusen gefährlicher Skripte, die dauerhaft auf dem Server verbleiben
  • DOM-basiertes XSS (Document Object Model) manipuliert das DOM, um schädliche Vorgänge direkt im Browser des Benutzers auszuführen
  • Reflektiertes XSS spiegelt schädliche Skripte aus der Eingabe des Opfers zurück
Advertisement

Gespeichertes XSS

Beim gespeicherten XSS werden schädliche Skripte oder Code langfristig auf einem Webserver, in einer Datenbank oder in einer Anwendung gespeichert. Diese Skripte werden anschließend unvorsichtigen Personen angezeigt, die eine bestimmte Website aufrufen oder bestimmte Informationen lesen. Um dies zu verhindern, müssen alle von Benutzern erzeugten Inhalte vor dem Speichern und vor der Anzeige auf Websites bereinigt und überprüft werden.

Stored XSS chart from Research Gate by Hossain Shahriar.
Image from Research Gate by Hossain Shahriar

Reflektiertes XSS

Reflektiertes XSS ist eine Angriffsart, bei der schädliche Skripte oder Code in die URL oder Anfrageparameter eingeschleust werden und der Server diese Eingabe in der Antwort an den Benutzer zurückgibt. Wenn ein Benutzer auf einen manipulierten Link klickt, führt er das eingeschleuste Skript unwissentlich aus. Um dies zu vermeiden, müssen alle Benutzereingaben validiert und bereinigt werden, insbesondere Informationen aus URL-Parametern oder Formularfeldern.

Reflected XSS chart from Research Gate by Hossain Shahriar.
Image from Research Gate by Hossain Shahriar

DOM-basiertes XSS

Bei einem DOM-basierten XSS-Angriff manipulieren schädliche Skripte das DOM, um Vorgänge zu beeinträchtigen. Im Gegensatz zu anderen XSS-Angriffen erfordert DOM-basiertes XSS keine Interaktion mit dem Server. Vor einer dynamischen Änderung des DOM ist es daher unerlässlich, Benutzereingaben zu überprüfen und zu bereinigen.

DOM-based XSS chart from Research Gate by Hossain Shahriar.
Image from Research Gate by Hossain Shahriar

3 Praxisbeispiele für Cross-Site-Scripting-Angriffe

British Airways, Fortnite und eBay gehören zu den bekanntesten realen Opfern von XSS-Angriffen. Schädliche Hacker nutzten Schwachstellen in ihren Websites aus, um schädliche Skripte einzuschleusen und Benutzerdaten zu kompromittieren. Diese aufsehenerregenden Sicherheitsverletzungen unterstreichen, wie wichtig robuste Sicherheitsmaßnahmen zum Schutz vor solchen Cyberbedrohungen und zum Schutz von Benutzerinformationen in der sich ständig weiterentwickelnden digitalen Landschaft sind.

Advertisement

British Airways

2018 wurde British Airways zum Ziel von Magecart, einer Hackergruppe, die für ihre Methoden zum Ausspähen von Kreditkartendaten bekannt ist. Die Gruppe nutzte eine XSS-Schwachstelle in der JavaScript-Bibliothek von Feedify aus, veränderte das Skript und übermittelte private Kundendaten an einen gefälschten Server. Dieser Server besaß ein SSL-Zertifikat und täuschte Verbraucher dadurch vor, dass ihre Transaktionen sicher seien. Die Hacker stahlen 380.000 Buchungstransaktionen, bevor jemand die Malware-Schwachstelle entdeckte.

Fortnite

2019 wies Fortnite, ein beliebtes Onlinespiel mit mehr als 200 Millionen Benutzern, eine nicht gemeldete XSS-Schwachstelle auf. Angreifer könnten das XSS-Problem mit einer unsicheren Single-Sign-on-(SSO-)Schwachstelle kombiniert haben, um virtuelles Geld zu stehlen, Gespräche von Spielern abzuhören und Chaos anzurichten. Check Point informierte Fortnite über den Angriff, doch es ist unklar, ob Angreifer die Schwachstelle damals ausgenutzt haben.

eBay

2015 und 2016 ermöglichte eine schwerwiegende XSS-Schwachstelle bei eBay Angreifern, schädlichen Code in Seiten einzuschleusen und vollständigen Zugriff auf Verkäuferkonten zu erhalten. Zu den Folgen gehörten vergünstigte Produkte, Zahlungsdaten und die Manipulation hochwertiger Angebote. Obwohl eBay die Schwachstelle behob, dauerten Folgeangriffe bis 2017 an, was den Kampf gegen die Bedrohungen in die Länge zog.

Welche Tools helfen, XSS-Angriffe zu verhindern?

Tools zum Scannen nach Schwachstellen, Tools für Penetrationstests und Web Application Firewalls können dazu beitragen, XSS-Angriffe zu verhindern und Ihre Website vor einer Kompromittierung zu schützen. Hier finden Sie eine Reihe von Tools, die Sie in Betracht ziehen können, darunter einige, die speziell für XSS entwickelt wurden.

Tools zum Scannen nach Schwachstellen

Tools zum Scannen nach Schwachstellen identifizieren und bewerten Sicherheitsschwachstellen in Webanwendungen, Netzwerken und Systemen. Sie scannen Code und Eingaben, erkennen potenzielle Schwachstellen und melden sie Entwicklern sowie IT- und Sicherheitsteams zur Behebung und zum Patchen.

  • XSStrike ist ein Open-Source-XSS-Scanner, der verschiedene XSS-Schwachstellen erkennen kann. XSStrike kann dabei helfen, potenzielle XSS-Probleme aufzuspüren. Wie gut es funktioniert, hängt jedoch möglicherweise von den Besonderheiten der getesteten Anwendung ab.
  • XSS Hunter wurde entwickelt, um Sicherheitsanalysten und Programmierer beim Auffinden und Überwachen von XSS-Schwachstellen zu unterstützen. Das Tool kann XSS-Probleme finden und bestätigen.
  • XSSER ist ein weiterer kostenloser Open-Source-XSS-Scanner. Wie bei XSStrike hängt der Erfolg davon ab, wie die Anwendung und ihre Sicherheitsmaßnahmen beschaffen sind.
  • Acunetix ist ein effektives Tool zum Auffinden von Online-Schwachstellen, darunter XSS-Schwachstellen. Es wird häufig eingesetzt und genießt einen guten Ruf.
  • Burp Suite ist ein weiteres hoch angesehenes Tool zur Bewertung der Sicherheit von Onlineanwendungen. Obwohl es eine Vielzahl von Optionen zum Testen von Webanwendungen bietet, bestimmen die Konfiguration und die Verwendung, wie gut es XSS-Schwachstellen findet.
  • Intruder ist ein weiterer Schwachstellenscanner, der zum Erkennen von XSS-Schwachstellen und anderen Sicherheitslücken in Onlineanwendungen eingesetzt wird. Die Konfiguration und der Umfang seiner Sicherheitsprüfungen bestimmen, wie effektiv es ist.
  • Dalfox ist ein schneller und effektiver Open-Source-XSS-Scanner. Wie bei anderen Scannern hängt sein Nutzen von der Situation ab, in der er eingesetzt wird.

Web Application Firewalls

Eine Web Application Firewall (WAF) ist ein Sicherheitsgerät, das schädlichen Datenverkehr überwacht, filtert und blockiert, bevor er eine Webanwendung erreicht. Sie fungiert als Zugangskontrolle, indem sie Angriffe wie XSS und SQL-Injection erkennt und blockiert. WAFs bieten außerdem Echtzeitschutz, indem sie den Datenverkehr aktiv analysieren und schädliche Anfragen blockieren.

WAFs bieten zwar eine Reihe von Schutzfunktionen für Webanwendungen, doch OWASP weist auf einige Einschränkungen beim XSS-Schutz hin und erklärt, sie könnten „unzuverlässig sein, da regelmäßig neue Umgehungstechniken entdeckt werden“. WAFs gehen außerdem nicht die eigentliche Ursache einer XSS-Schwachstelle an. Darüber hinaus erkennen WAFs eine Klasse von XSS-Schwachstellen nicht, die ausschließlich clientseitig funktionieren. WAFs werden nicht zur Verhinderung von XSS empfohlen, insbesondere nicht von DOM-basiertem XSS.“

Hier sind einige der führenden Anbieter auf dem WAF-Markt:

  • Akamai App and API Protector: Akamai bietet Sicherheitsdienste an. Das WAF-Produkt des Unternehmens wurde entwickelt, um Anwendungen gegen verschiedene Angriffe, darunter XSS, zu schützen.
  • AppTrana ist eine cloudbasierte Anwendungssicherheitslösung mit WAF-Funktionen zum Schutz vor XSS und anderen Bedrohungen für Webanwendungen.
  • AWS WAF: Die von Amazon Web Services (AWS) angebotene Web Application Firewall kann zum Schutz von auf AWS gehosteten Anwendungen vor verschiedenen Bedrohungen, darunter XSS, eingesetzt werden.
  • Cloudflare WAF ist eine beliebte Lösung, die Schutz vor XSS-Angriffen und anderen Gefahren für Webanwendungen bietet.
  • Imperva WAF: Imperva bietet eine Vielzahl von Sicherheitsprodukten an. Die WAF-Lösung des Unternehmens soll Webanwendungen vor verschiedenen Bedrohungen wie XSS schützen.
  • Microsoft Azure App Gateway: Das Application Gateway von Azure bietet WAF-Funktionen, um Webanwendungen, die auf Azure gehostet werden, vor typischen Angriffen wie XSS zu schützen.
  • F5 Advanced WAF wurde entwickelt, um Onlineanwendungen vor XSS-Angriffen und anderen Sicherheitsrisiken zu schützen. Zur Erkennung und Abwehr von Versuchen, schädlichen Code einzuschleusen, kombiniert die Lösung signaturbasierte und verhaltensbasierte Erkennungsmethoden.
  • FASTLY ist ein Content Delivery Network (CDN), das auch Onlinesicherheitsdienste wie WAF-Funktionen anbietet. Die WAF-Lösung soll verschiedene XSS-Angriffe und andere Gefahren für Webanwendungen erkennen und stoppen.
  • Fortinet Fortiweb ist eine spezialisierte Web Application Firewall, die Schutz vor typischen Schwachstellen von Webanwendungen wie XSS bietet. Um solche Angriffe zu erkennen und zu stoppen, kombiniert sie signaturbasierte Verfahren mit verhaltensbasierten Analyseverfahren.
  • Radware bietet eine WAF-Lösung an, die Onlineanwendungen vor verschiedenen Gefahren wie XSS-Angriffen schützen soll. Zur Erkennung und Verhinderung schädlicher Code-Injektionen nutzt sie eine Vielzahl von Sicherheitsmaßnahmen.
  • Wallarm bietet eine Reihe von Sicherheitsfunktionen für Anwendungen und APIs, darunter eine cloudbasierte WAF. Zur Erkennung und Behebung von XSS-Schwachstellen und anderen Schwachstellen in Webanwendungen nutzt die Lösung maschinelles Lernen und Verhaltensanalyse.

Lesen Sie auch:

Fazit: XSS-Angriffe verhindern

Cross-Site-Scripting-(XSS-)Schwachstellen sind allzu häufig. Organisationen, die auf ihre Websites und Webanwendungen angewiesen sind, müssen Cybersicherheit und sichere Programmierpraktiken priorisieren, um ihre Werte und ihren Markenruf zu schützen. XSS-Angriffe können scheinbar harmlose Webseiten mit zerstörerischen Skripten füllen, was katastrophale Folgen haben und Kunden schädigen kann.

Um Ihre Webanwendungen zu schützen, sollten Sie proaktive Maßnahmen wie regelmäßiges Scannen nach Schwachstellen, HTTP-Only-Cookies, das Escapen von Ausgaben und die Validierung von Benutzereingaben ergreifen. XSS-Angriffe erfolgen auf verschiedene Weise. Die Validierung von Variablen, die Kodierung von Ausgaben und die Bereinigung von HTML können dazu beitragen, die Sicherheit zu erhöhen.

Überarbeiten Sie Ihren Code, um unsichere Senken zu vermeiden, und setzen Sie auf vertrauenswürdige Bibliotheken wie DOMPurify, damit Ihre Website sicher und benutzerfreundlich bleibt. Wenn Sie der Verhinderung von XSS-Angriffen und der Sicherheit von Webanwendungen Priorität einräumen, gewinnen Benutzer Vertrauen, weil sie sich auf eine sichere Nutzung verlassen können.

Lesen Sie weiter: Was ist dynamisches Anwendungssicherheitstesten (DAST)?

Kathryn Timonera

Datamation and eWeek staff writer Kathryn Pearl Timonera has covered a wide range of industries in her career, including technology, cybersecurity, e-commerce, and programming. Kathryn now applies her talent for presenting information to technology and cybersecurity professionals.

eSecurity Planet Logo

eSecurity Planet is a leading resource for IT professionals at large enterprises who are actively researching cybersecurity vendors and latest trends. eSecurity Planet focuses on providing instruction for how to approach common security challenges, as well as informational deep-dives about advanced cybersecurity topics.

Eigentum von TechnologyAdvice. © 2026 TechnologyAdvice. Alle Rechte vorbehalten

Werbetreibenden-Offenlegung: Einige der auf dieser Website erscheinenden Produkte stammen von Unternehmen, von denen TechnologyAdvice eine Vergütung erhält. Diese Vergütung kann beeinflussen, wie und wo Produkte auf dieser Website erscheinen, einschließlich beispielsweise der Reihenfolge, in der sie erscheinen. TechnologyAdvice schließt nicht alle Unternehmen oder alle auf dem Marktplatz verfügbaren Produkttypen ein.