
DOMPurify v3.4.13
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:
DOMPurify
DOMPurify ist ein DOM-basierter, superschneller, äußerst toleranter XSS-Sanitizer für HTML, MathML und SVG.
Er ist außerdem sehr einfach zu verwenden und einzurichten. DOMPurify wurde im Februar 2014 gestartet und hat inzwischen Version v3.4.15 erreicht.
DOMPurify läuft als JavaScript und funktioniert in allen modernen Browsern (Safari (10+), Opera (15+), Edge, Firefox und Chrome – sowie nahezu allem anderen, das Blink, Gecko oder WebKit verwendet). Es bricht nicht auf MSIE oder anderen Legacy-Browsern. Es tut 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 (zurück bis 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 ... keine Garantien.
DOMPurify wird von Sicherheitsexperten geschrieben, die über umfangreiche Erfahrung mit Webangriffen und XSS verfügen. Keine Sorge. Für weitere Details lesen Sie bitte auch unsere Security Goals & Threat Model. Bitte lesen Sie es. 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?
- Wie verwende ich es?
- Gibt es eine Demo?
- Was, wenn ich einen Sicherheits-Bug finde?
- Ein paar Bereinigungsbeispiele bitte?
- Was wird unterstützt?
- Was ist mit Legacy-Browsern wie Internet Explorer?
- Was ist mit DOMPurify und Trusted Types?
- Kann ich DOMPurify konfigurieren?
- Persistente Konfiguration
- Hooks
- Entfernte Konfiguration
- Continuous Integration
- Sicherheits-Mailingliste
- Wer hat beigetragen?
Was macht es?
DOMPurify bereinigt HTML und verhindert XSS-Angriffe. Sie können DOMPurify beispielsweise 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 Übel. 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)```html
### Verwendung der minifizierten und getesteten Produktionsversion (Source-Map verfügbar)```html
<script type="text/javascript" src="dist/purify.min.js"></script>
Anschließend können Sie Zeichenketten bereinigen, indem Sie den folgenden Code ausführen:```js const clean = DOMPurify.sanitize(dirty);
Oder vielleicht das hier, wenn du gerne mit Angular oder Ähnlichem arbeitest:```js
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:```js
const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });
### Gibt es irgendwelche Stolperfallen?
Nun, bitte beachten Sie: Wenn Sie HTML _zuerst_ bereinigen und es _danach_ ändern, können Sie leicht **die Wirkung der Bereinigung zunichtemachen**. Wenn Sie das bereinigte Markup _nach_ der Bereinigung an eine andere Bibliothek weitergeben, stellen Sie bitte sicher, dass die Bibliothek nicht selbst am HTML herummanipuliert. Siehe [Security Goals & Threat Model](https://github.com/cure53/DOMPurify/wiki/Security-Goals-&-Threat-Model) für Rezepte zur sicheren Verwendung und die Tags/Attribute, bei denen man zweimal nachdenken sollte, sowie [Attack Classes & Bypass History](https://github.com/cure53/DOMPurify/wiki/Attack-Classes-&-Bypass-History) dafür, warum Nachbearbeitung und das Ändern des Markup-Kontexts die Bereinigung aushebeln.
### Okay, ergibt Sinn, machen wir weiter
Nach der Bereinigung Ihres Markups können Sie sich auch die Eigenschaft `DOMPurify.removed` ansehen und herausfinden, welche Elemente und Attribute entfernt wurden. Bitte **verwenden Sie** diese Eigenschaft **nicht** für sicherheitskritische Entscheidungen. Dies ist nur eine kleine Hilfe für neugierige Gemüter.
### DOMPurify auf dem Server ausführen
DOMPurify funktioniert technisch auch serverseitig mit Node.js. Unser Support bemüht sich, dem [Node.js-Release-Zyklus](https://nodejs.org/en/about/previous-releases) zu folgen.