Zurück zu den Updates
New releaseAug 20, 2026

DOMPurify v3.4.14

DOMPurify - ein ausschließlich auf dem DOM basierender, superschneller, ultratoleranter XSS-Sanitizer für HTML, MathML und SVG. DOMPurify arbeitet mit einer sicheren Standardkonfiguration, bietet aber viele Konfigurationsmöglichkeiten und Hooks. Demo:

Teilen

DOMPurify

npm License Downloads dependents npm package minimized gzipped size (select exports) Cloudback

OpenSSF Best Practices Build & Test OpenSSF Scorecard Socket Badge snyk.io package health

DOMPurify ist ein reiner DOM-basierter, extrem schneller und äußerst toleranter XSS-Sanitizer für HTML, MathML und SVG.

Er ist außerdem sehr einfach zu verwenden und schnell einsatzbereit. DOMPurify wurde im Februar 2014 gestartet und hat inzwischen Version v3.4.17 erreicht.

DOMPurify läuft als JavaScript und funktioniert in allen modernen Browsern (Safari (10+), Opera (15+), Edge, Firefox und Chrome – sowie in nahezu allem anderen, das Blink, Gecko oder WebKit verwendet). Es bricht nicht auf MSIE oder anderen Legacy-Browsern. Es tut dort einfach nichts.

Beachten Sie, dass DOMPurify v2.5.9 die letzte Version ist, die MSIE unterstützt. Für wichtige Sicherheitsupdates, die mit MSIE kompatibel sind, verwenden Sie bitte den 2.x-Zweig.

Unsere automatisierten Tests decken bei jedem Push 9 Browser-/OS-Kombinationen auf den aktuellen Engines ab (Chromium, Firefox und WebKit unter Ubuntu, macOS und Windows), und eine separate Matrix führt die Testsuite erneut auf älteren Engine-Snapshots aus (bis zurück zu etwa Chromium 110, Firefox 108 und WebKit 16.4, also rund drei Jahre alt), damit auch Regressionen auf veralteten Browsern erkannt werden. Wir führen außerdem Node.js v20, v22, v24, v25 und v26 mit DOMPurify auf jsdom aus. Ältere Node-Versionen funktionieren bekanntermaßen ebenfalls, aber hey... ohne Garantie.

DOMPurify wird von Sicherheitsexperten geschrieben, die über umfangreiche Erfahrung mit Webangriffen und XSS verfügen. Keine Sorge. Weitere Details finden Sie auch in unseren Security Goals & Threat Model. Bitte lesen Sie das. Wirklich. Und wenn Sie die blutigen Details mögen, katalogisiert die Seite Attack Classes & Bypass History die Parser-Mutation-, Namespace-, Clobbering- und Template-Tricks, gegen die DOMPurify sich verteidigt.

Das DOMPurify-Projekt inspirierte die Entwicklung der HTML Sanitizer API, die bereits in vielen Browsern ausgeliefert wird. Dieselbe Fähigkeit wird nun direkt in der WHATWG HTML-Spezifikation standardisiert.

Inhaltsverzeichnis

Was macht es?

DOMPurify bereinigt HTML und verhindert XSS-Angriffe. Sie können DOMPurify z. B. mit einem String voller unsauberem HTML füttern, und es gibt einen String (sofern nicht anders konfiguriert) mit sauberem HTML zurück. DOMPurify entfernt alles, was gefährliches HTML enthält, und verhindert dadurch XSS-Angriffe und andere Unannehmlichkeiten. Es ist außerdem verdammt schnell. Wir nutzen die Technologien, die der Browser bereitstellt, und verwandeln sie in einen XSS-Filter. Je schneller Ihr Browser, desto schneller ist DOMPurify.

Wie verwende ich es?

Es ist einfach. Binden Sie DOMPurify einfach in Ihre Website ein.

Verwendung der nicht minimierten Version (source-map verfügbar)

<script type="text/javascript" src="dist/purify.js"></script>

Verwendung der minimierten und getesteten Produktionsversion (source-map verfügbar)

<script type="text/javascript" src="dist/purify.min.js"></script>

Anschließend können Sie Strings bereinigen, indem Sie den folgenden Code ausführen:

const clean = DOMPurify.sanitize(dirty);

Oder vielleicht das hier, wenn du gerne mit Angular oder Ähnlichem arbeitest:

import DOMPurify from 'dompurify';

const clean = DOMPurify.sanitize('<b>hello there</b>');

Das resultierende HTML kann mit innerHTML in ein DOM-Element oder mit document.write() in das DOM geschrieben werden. Das liegt ganz bei Ihnen. Beachten Sie, dass wir standardmäßig HTML, SVG und MathML zulassen. Wenn Sie nur HTML benötigen, was ein sehr häufiger Anwendungsfall sein dürfte, können Sie das ebenfalls einfach einrichten:

const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });

Gibt es irgendein Risiko für Fußangeln?

Bitte beachten Sie: Wenn Sie HTML zuerst bereinigen und es anschließend ändern, können Sie die Wirkung der Bereinigung leicht aufheben. Wenn Sie das bereinigte Markup nach der Bereinigung an eine andere Bibliothek weitergeben, stellen Sie bitte sicher, dass die Bibliothek nicht eigenmächtig am HTML herumspielt. Siehe Security Goals & Threat Model für Rezepte zur sicheren Verwendung und für Tags/Attribute, bei denen man zweimal nachdenken sollte, sowie Attack Classes & Bypass History dafür, warum Nachbearbeitung und das Ändern des Markup-Kontexts die Bereinigung aushebeln.

Was ist mit der Übergabe eines DOM-Knotens statt eines Strings?

Kategorien