Securam Consulting Logo

Das große IT-Security-Glossar

Definition:

Persistentes XSS

Persistentes Cross-Site Scripting (Stored XSS) ist eine besonders gefährliche Form von XSS-Angriffen, bei der schädlicher JavaScript-Code dauerhaft auf einem Server gespeichert wird – etwa in Forenbeiträgen, Kommentarfeldern, Benutzerprofilen oder Nachrichten. Sobald eine andere Person eine entsprechende Seite aufruft, wird der Code direkt im Kontext der Website ausgeführt, ohne aktives Zutun des Opfers. Der schadhafte Payload wird dabei an alle Besucher ausgeliefert, was eine hohe Reichweite und Wiederholbarkeit zur Folge hat.

Anders als beim Reflected XSS, bei dem der Angriff nur während der Übermittlung im URL-Parameter oder HTTP-Request geschieht, bleibt persistentes XSS langfristig wirksam. Diese Methode eignet sich für Session-Diebstahl, Keylogging, Phishing innerhalb legitimer Webseiten oder die Verbreitung von Malware über Drive-by-Downloads.


Schutzmaßnahmen gegen persistentes XSS

Um persistentes XSS effektiv zu verhindern, müssen Entwickler eine Kombination aus serverseitiger Validierung und clientseitiger Schutzmechanismen implementieren:

  • Context-sensitive Escaping
    Alle Benutzereingaben müssen kontextsensitiv kodiert werden – je nach Platzierung im HTML, JavaScript oder in Attributen (z. B. OWASP Encoder Libraries).

  • HTML-Template-Engines nutzen
    Frameworks mit automatischer Kontextvalidierung (z. B. React, Angular mit domSanitizer) reduzieren das Risiko durch unsafe Bindings.

  • Content Security Policy (CSP)
    Eine strikte CSP-Header-Konfiguration verbietet Inline-Skripte und erlaubt nur definierte Skriptquellen (z. B. script-src 'self').

  • Whitelisting statt Blacklisting
    Statt gefährliche Zeichen zu filtern, sollte nur zugelassener Inhalt gespeichert werden.

  • Sicherer Umgang mit Benutzerinhalten im Frontend
    Keine dynamische Einbindung via innerHTML, document.write oder eval().


Verwandte Begriffe


Beispiel aus der Praxis

In einem Community-Forum lädt ein Nutzer einen scheinbar harmlosen Kommentar hoch – dieser enthält jedoch ein verstecktes <script>, das bei jedem Seitenaufruf einen Session-Cookie per HTTP an eine externe Domain sendet. Andere Nutzer, die diesen Beitrag lesen, werden unwissentlich kompromittiert. Wochenlang bleibt der Angriff unentdeckt, bis ein Sicherheitstest den gespeicherten Payload erkennt. Als Reaktion wird das Kommentar-Modul überarbeitet, Eingaben HTML-escaped und zusätzlich eine CSP eingeführt, um das Ausführen externer Skripte zu unterbinden.