Cross-Site Scripting (XSS) ist eine der häufigsten Sicherheitslücken in Webanwendungen und stellt eine ernste Bedrohung für die Integrität und Vertraulichkeit von Daten dar. XSS ermöglicht es Angreifern, bösartigen Code in Webseiten einzuschleusen, der dann von anderen Benutzern, die die Webseite besuchen, unbemerkt ausgeführt wird. In der Regel handelt es sich bei dem eingeschleusten Code um JavaScript, aber auch HTML, CSS oder andere ausführbare Inhalte können betroffen sein.
XSS-Angriffe können in drei Hauptkategorien unterteilt werden:
- Reflektiertes XSS (Non-Persistent): Bei dieser Form wird der bösartige Code direkt an den Server gesendet und von diesem in einer Antwort an das Opfer zurückgesendet, ohne dass er dauerhaft auf dem Server gespeichert wird. Diese Art von Angriff tritt oft über URL-Parameter oder Formulareingaben auf.
- Gespeichertes XSS (Persistent): Hierbei wird der bösartige Code dauerhaft auf dem Server gespeichert, z. B. in einer Datenbank, und bei jedem Aufruf der betroffenen Seite an alle Nutzer ausgeliefert. Diese Angriffe treten häufig in Foren, Kommentarfeldern oder ähnlichen Eingabemöglichkeiten auf.
- DOM-basiertes XSS: Diese Variante basiert auf der Manipulation des Document Object Models (DOM) der Webseite. Dabei wird der bösartige Code auf der Client-Seite direkt im Browser des Benutzers ausgeführt, ohne dass der Server involviert ist.
Die Gefahren von XSS-Angriffen reichen von der Manipulation der Benutzeroberfläche bis hin zur Entwendung von Cookies und Session-IDs, die dann für weiterführende Angriffe genutzt werden können.
Um XSS-Angriffe zu verhindern, sollten Webentwickler strikte Eingabevalidierung implementieren, Nutzereingaben korrekt maskieren und spezielle Sicherheitsmechanismen wie Content Security Policies (CSP) einsetzen. Zudem sollten Frameworks und Bibliotheken verwendet werden, die Schutz vor XSS bieten, um die Anfälligkeit der Anwendung zu minimieren.


