In Ruhe erklärt
Viele Websites zeigen Text an, der von außen kommt: Kommentare, Suchbegriffe, Namen. Gibt die Seite diesen Text ungeprüft als HTML aus, kann jemand statt Text ein Skript hineinschreiben. Der Browser jedes Besuchers führt es dann aus, als gehöre es zur Website.
Weil das Skript im Namen der Website läuft, darf es alles, was die Seite darf: Inhalte lesen, Formulare abschicken, im Namen des angemeldeten Besuchers handeln. Das macht XSS zu einer der folgenreichsten Lücken im Web.
Die eigentliche Abwehr steckt in der Anwendung: Text von außen wird beim Ausgeben so maskiert, dass er Text bleibt. Moderne Vorlagensysteme tun das meist von selbst — aber nicht in jedem Zusammenhang, etwa bei Links oder bei bewusst freigeschalteter HTML-Ausgabe. Als zweite Linie hindert eine Content Security Policy (CSP) den Browser daran, eingeschleuste Skripte auszuführen.