Cross-Site Scripting (XSS) ist eine Sicherheitslücke in Webanwendungen, die es Angreifern ermöglicht, bösartigen Code, üblicherweise in Form von JavaScript, in Webseiten einzuschleusen, die andere Nutzer anzeigen und interagieren. Diese Art von Angriff nutzt die Tatsache aus, dass eine Webanwendung unzureichende Überprüfung oder Desinfektion von Benutzereingaben durchführt. Wenn ein unwissender Benutzer auf eine speziell präparierte Webseite zugreift oder eine manipulierte URL aufruft, wird der eingebettete bösartige Skriptcode vom Browser des Benutzers als Teil der Webseite ausgeführt.
XSS-Angriffe können verschiedene Formen annehmen, darunter:
- Gespeichertes XSS (Persistent XSS): Der bösartige Code wird auf dem Server der Webanwendung gespeichert, beispielsweise in einer Datenbank, und wird jedem Benutzer angezeigt, der die betroffene Seite aufruft.
- Reflektiertes XSS (Non-Persistent XSS): Der bösartige Code wird nicht dauerhaft auf dem Server gespeichert, sondern durch eine URL oder Anfrage an den Server übertragen, die das Skript in der Antwort reflektiert, welche dann vom Browser des Opfers ausgeführt wird.
- DOM-basiertes XSS: Hierbei findet der Angriff vollständig im Document Object Model (DOM) des Browsers statt, ohne dass die Serverantwort verändert wird. Stattdessen manipuliert der Angriff die Umgebung im Opferbrowser, sodass das Skript aufgrund einer Änderung im DOM ausgeführt wird.
Die Auswirkungen eines XSS-Angriffs können von relativ harmlosen Streichen bis hin zu ernsthaften Sicherheitsverletzungen reichen, einschließlich Diebstahl von Cookies, Session-Hijacking, Phishing, Umleitung auf bösartige Websites und Installation von Malware. Um sich gegen XSS zu schützen, sollten Entwickler Eingaben validieren und desinfizieren, Content Security Policies (CSP) implementieren und sichere Programmierpraktiken anwenden, um sicherzustellen, dass Benutzereingaben nicht als ausführbarer Code interpretiert werden können.