Das XSS (Cross-Site Scripting) ist eine Angriffsklasse, bei der ein Angreifer fremden Skriptcode — meist JavaScript — in eine vertrauenswürdige Webseite einschleust. Wird die Seite anschließend von anderen Nutzern aufgerufen, führt deren Browser den eingeschleusten Code aus, im Sicherheitskontext der angegriffenen Seite.

XSS gehört zu den am längsten bekannten und am häufigsten ausgenutzten Schwachstellen im Web und steht traditionell in der OWASP Top 10.

Auswirkungen

Da der Code im Sicherheitskontext der Seite läuft, kann er weitreichend handeln:

  • Sitzungs-Cookies auslesen, sofern sie nicht mit HttpOnly geschützt sind.
  • Eingabefelder überwachen oder umleiten, etwa bei Login-Formularen.
  • Aktionen im Namen des Nutzers auslösen, da der Browser angemeldete Sitzungen automatisch nutzt.
  • Inhalte der Seite verändern und glaubwürdige Phishing-Oberflächen erzeugen.

Varianten

XSS tritt in mehreren Spielarten auf:

  • Reflected XSS — der eingeschleuste Code stammt aus der aktuellen Anfrage (z. B. Query-Parameter) und wird unverändert in die Antwort übernommen.
  • Stored XSS — der Code wird dauerhaft serverseitig gespeichert (Kommentare, Profile, Nachrichten) und bei jedem Aufruf an alle Besucher ausgeliefert.
  • DOM-based XSS — der Code wird gar nicht vom Server ausgeliefert, sondern entsteht erst im Browser, wenn JavaScript Eingaben unsicher in das DOM einbaut.

Schutzmaßnahmen

Wirksamer Schutz greift an mehreren Stellen:

  • Kontextgerechtes Escaping — Eingaben werden je nach Ausgabekontext (HTML-Body, Attribut, JavaScript, URL) sauber kodiert.
  • Templating-Engines mit automatischem Escaping standardmäßig aktiviert lassen, statt Strings selbst zusammenzubauen.
  • Content Security Policy (CSP) als zweite Verteidigungslinie: ein restriktiver Header schränkt ein, welche Skriptquellen ein Browser überhaupt ausführen darf.
  • HttpOnly-Cookies für Sitzungs-IDs, damit gestohlener Code sie nicht mitnehmen kann.
  • Sanitizing von HTML-Inhalten, wenn Nutzer reichhaltigen Text einreichen dürfen — etwa über etablierte Bibliotheken wie DOMPurify.

Abgrenzung

XSS richtet sich gegen den Browser anderer Nutzer. Schwachstellen, die unmittelbar den Server kompromittieren — etwa SQL-Injection oder Command-Injection — fallen in andere Kategorien, auch wenn sie häufig in denselben Anwendungen anzutreffen sind.

/ Weiter

Zurück zu IT

Zur Übersicht