Cross-Site Scripting (XSS) ist eine Angriffstechnik, bei der ein Angreifer Skriptcode in eine Website einschleust, der anschließend vom Browser anderer Besucher ausgeführt wird. Dies kann zu gestohlenen Sitzungen, Missbrauch von Konten oder unerwünschten Aktionen im Namen des Nutzers führen. Du schützt deine Website, indem du Eingaben stets validierst und escapest, Sicherheitsheader wie Content-Security-Policy einstellst, Software aktuell hältst und eine gut abgesicherte Hosting-Plattform nutzt.
Was ist XSS und wie funktioniert es
Bei XSS platziert ein Angreifer schädlichen JavaScript-Code auf einer Seite, beispielsweise über ein Formularfeld, eine Suchleiste oder ein Kommentarfeld. Wird diese Eingabe unverarbeitet auf der Website angezeigt, führt der Browser jedes Besuchers den Code einfach aus. Der Browser kann nicht unterscheiden zwischen legitimem Code der Website und dem eingeschleusten Angriffscode, da beide scheinbar von derselben Domain stammen.
Die Folgen können von lästig (Pop-ups, Weiterleitungen) bis hin zu ernsthaft reichen: Diebstahl von Session-Cookies, Übernahme von Konten oder heimliches Ausführen von Aktionen im Namen eines angemeldeten Nutzers, wie das Ändern von Daten oder das Aufgeben von Bestellungen.
Arten von XSS-Angriffen
Es gibt drei Haupttypen, die du kennen solltest, um die richtigen Maßnahmen zu ergreifen.
Stored XSS wird dauerhaft auf dem Server gespeichert, beispielsweise in einem Kommentar unter einem Blogbeitrag oder in einem Forumsbeitrag. Jeder, der die Seite besucht, führt den schädlichen Code aus.
Reflected XSS versteckt sich in einem Link oder URL-Parameter. Der Code wird direkt in der Serverantwort zurückgesendet und ausgeführt, sobald das Opfer auf den Link klickt.
DOM-basiertes XSS spielt sich vollständig im Browser ab, wobei JavaScript auf der Seite unsicher mit Benutzereingaben umgeht, ohne dass der Server davon etwas mitbekommt.
Konkrete Schutzmaßnahmen
XSS zu verhindern ist vor allem eine Frage davon, Eingaben niemals zu vertrauen und Ausgaben immer korrekt darzustellen.
Validiere und filtere Eingaben
Akzeptiere nur den Datentyp, den du erwartest, beispielsweise nur Zahlen in einem Postleitzahlenfeld. Weise unerwartete Zeichen ab, anstatt zu versuchen, sie zu bereinigen.
Escape Ausgaben
Stelle sicher, dass Sonderzeichen wie < und " in ihre HTML-Entitäten umgewandelt werden, bevor Benutzereingaben auf der Seite angezeigt werden. Die meisten modernen Frameworks tun dies standardmäßig, aber überprüfe dies bei handgeschriebenem Code.
Richte eine Content-Security-Policy ein
Mit einem CSP-Header bestimmst du, von welchen Quellen Skripte geladen werden dürfen. Dies blockiert eingeschleuste oder externe schädliche Skripte, selbst wenn es einem Angreifer gelingt, Code einzuschleusen.
Nutze HttpOnly- und Secure-Cookies
Indem du Session-Cookies als HttpOnly markierst, kann JavaScript sie nicht auslesen, wodurch Diebstahl über XSS deutlich erschwert wird.
Halte CMS, Plugins und Themes aktuell
Viele XSS-Schwachstellen entstehen durch veraltete Software. Aktualisiere WordPress, Plesk-Erweiterungen und andere Komponenten, sobald ein Update verfügbar ist.
Die Rolle deiner Hosting-Umgebung
Neben Maßnahmen auf Code-Ebene hilft eine gut eingerichtete Serverumgebung, die Auswirkungen von XSS zu begrenzen. Denke an aktuelle PHP- und Softwareversionen, eine Firewall, die verdächtige Anfragen blockiert, sowie Trennung zwischen Websites, sodass eine Schwachstelle auf einer Website nicht auf andere übergreift.
Bei Tandata findest du solche Einstellungen, wie SSL, PHP-Versionen und Firewall-Regeln, übersichtlich in der Plesk-Systemsteuerung bei deinem Webhosting. Zweifelst du, ob dein aktueller Anbieter dies gut im Griff hat, dann schau dir an, was beim Wechsel zu Tandata alles dazugehört. Auch E-Mail-Formulare auf deiner Website sind ein häufiges Ziel für Skriptinjektionen, also überprüfe auch die Einstellungen deiner geschäftlichen E-Mail auf missbrauchsanfällige Formulare.
Häufig gestellte Fragen
Ist XSS dasselbe wie SQL-Injection?
Nein. SQL-Injection richtet sich gegen die Datenbank, während sich XSS gegen den Browser des Besuchers richtet. Beide entstehen durch unzureichende Validierung von Eingaben, erfordern aber unterschiedliche Schutzmaßnahmen.
Kann ein kostenloses SSL-Zertifikat XSS verhindern?
Nein, SSL verschlüsselt nur den Datenverkehr zwischen Browser und Server. Es schützt nicht vor dem Einschleusen oder Ausführen von Skripten auf einer Seite.
Schützt mich ein CMS wie WordPress automatisch vor XSS?
WordPress verfügt über eingebaute Funktionen, um Eingaben zu escapen, aber Plugins und Themes von Drittanbietern können dennoch Schwachstellen enthalten. Halte daher alles aktuell.
Wie merke ich, dass meine Website Opfer von XSS ist?
Oft merkst du es erst, wenn Besucher seltsame Pop-ups, Weiterleitungen oder nicht autorisierte Aktionen melden. Regelmäßige Scans und Log-Kontrollen helfen, es früher zu erkennen.
Wo finde ich Hilfe bei der Absicherung meiner Website?
In der Wissensdatenbank findest du weitere Erklärungen zu Sicherheitseinstellungen, und über WhatsApp, Ticket oder E-Mail steht die Support-Abteilung bereit, um mitzudenken.
Fazit
XSS ist eine häufige, aber gut vermeidbare Schwachstelle. Indem du Eingaben validierst, Ausgaben escapest, eine Content-Security-Policy einrichtest und Software aktuell hältst, schließt du die wichtigsten Türen für Angreifer. Eine sichere, aktuelle Hosting-Umgebung mit Firewall und Isolation zwischen Websites bildet dabei eine solide Grundlage.