
DOMPurify v3.4.13
DOMPurify - HTML, MathML और SVG के लिए एक DOM-मात्र, अति-तेज़, अति-सहिष्णु XSS सैनिटाइज़र। DOMPurify एक सुरक्षित डिफ़ॉल्ट के साथ काम करता है, लेकिन बहुत सारी कॉन्फ़िगरेबिलिटी और हुक्स प्रदान करता है। डेमो:
DOMPurify
DOMPurify, HTML, MathML और SVG के लिए एक DOM-केवल, अत्यंत तेज़, अत्यधिक सहनशील XSS सैनिटाइज़र है।
इसका उपयोग करना और इसके साथ शुरुआत करना भी बहुत आसान है। DOMPurify को फरवरी 2014 में शुरू किया गया था और तब से यह संस्करण v3.4.17 तक पहुँच चुका है।
DOMPurify JavaScript के रूप में चलता है और सभी आधुनिक ब्राउज़रों (Safari (10+), Opera (15+), Edge, Firefox और Chrome - साथ ही Blink, Gecko या WebKit का उपयोग करने वाला लगभग कोई भी अन्य) में काम करता है। यह MSIE या अन्य लेगेसी ब्राउज़रों पर टूटता नहीं है। यह बस कुछ नहीं करता।
ध्यान दें कि DOMPurify v2.5.9 MSIE का समर्थन करने वाला नवीनतम संस्करण है। MSIE के साथ संगत महत्वपूर्ण सुरक्षा अपडेट के लिए, कृपया 2.x शाखा का उपयोग करें।
हमारे स्वचालित परीक्षण प्रत्येक पुश पर वर्तमान इंजनों (Ubuntu, macOS और Windows पर Chromium, Firefox और WebKit) पर 9 ब्राउज़र/OS संयोजनों को कवर करते हैं, और एक अलग मैट्रिक्स पुराने इंजन स्नैपशॉट्स (लगभग Chromium 110, Firefox 108 और WebKit 16.4 तक, लगभग तीन वर्ष पुराने) पर सूट को फिर से चलाता है ताकि पुराने ब्राउज़रों पर होने वाले रिग्रेशन भी पकड़े जा सकें। हम jsdom पर DOMPurify के साथ Node.js v20, v22, v24, v25 और v26 भी चलाते हैं। पुराने Node संस्करण भी काम करते हैं, लेकिन... कोई गारंटी नहीं।
DOMPurify उन सुरक्षा विशेषज्ञों द्वारा लिखा गया है जिनके पास वेब हमलों और XSS में व्यापक पृष्ठभूमि है। डरें नहीं। अधिक जानकारी के लिए कृपया हमारे सुरक्षा लक्ष्य और खतरा मॉडल के बारे में भी पढ़ें। कृपया इसे पढ़ें। जैसे, वास्तव में। और यदि आपको रोमांचक विवरण पसंद हैं, तो हमला वर्ग और बायपास इतिहास पृष्ठ उन पार्सर-म्यूटेशन, नेमस्पेस, क्लॉबरिंग और टेम्पलेट चालों की सूची देता है जिनके विरुद्ध DOMPurify रक्षा करता है।
DOMPurify परियोजना ने HTML Sanitizer API के निर्माण को प्रेरित किया, जो पहले से ही कई ब्राउज़रों में उपलब्ध है। वही क्षमता अब सीधे WHATWG HTML विनिर्देश में मानकीकृत की जा रही है।
विषय-सूची
- यह क्या करता है?
- मैं इसका उपयोग कैसे करूँ?
- क्या कोई डेमो है?
- अगर मुझे कोई सुरक्षा बग मिले तो क्या करूँ?
- कृपया कुछ शुद्धिकरण नमूने दें?
- क्या समर्थित है?
- Internet Explorer जैसे लीगेसी ब्राउज़रों के बारे में क्या?
- DOMPurify और Trusted Types के बारे में क्या?
- क्या मैं DOMPurify को कॉन्फ़िगर कर सकता/सकती हूँ?
- स्थायी कॉन्फ़िगरेशन
- हुक्स
- हटाया गया कॉन्फ़िगरेशन
- सतत एकीकरण
- सुरक्षा मेलिंग सूची
- किसने योगदान दिया?
यह क्या करता है?
DOMPurify HTML को सैनिटाइज़ करता है और XSS हमलों को रोकता है। आप DOMPurify को उदाहरण के लिए गंदे HTML से भरी एक स्ट्रिंग दे सकते हैं और यह साफ़ HTML वाली एक स्ट्रिंग लौटाएगा (जब तक कि अन्यथा कॉन्फ़िगर न किया गया हो)। DOMPurify उन सभी चीज़ों को हटा देगा जिनमें खतरनाक HTML हो, और इस प्रकार XSS हमलों तथा अन्य बुराइयों को रोकेगा। यह बेहद तेज़ भी है। हम ब्राउज़र द्वारा प्रदान की गई तकनीकों का उपयोग करते हैं और उन्हें एक XSS फ़िल्टर में बदल देते हैं। आपका ब्राउज़र जितना तेज़ होगा, DOMPurify उतना ही तेज़ होगा।
मैं इसका उपयोग कैसे करूँ?
यह आसान है। बस अपनी वेबसाइट पर DOMPurify शामिल करें।
अनमिनिफ़ाइड संस्करण का उपयोग करना (source-map उपलब्ध है)
<script type="text/javascript" src="dist/purify.js"></script>
न्यूनतम और परीक्षित प्रोडक्शन संस्करण का उपयोग करना (source-map उपलब्ध)
<script type="text/javascript" src="dist/purify.min.js"></script>
इसके बाद आप निम्नलिखित कोड निष्पादित करके स्ट्रिंग्स को सैनिटाइज़ कर सकते हैं:
const clean = DOMPurify.sanitize(dirty);
या शायद यह, अगर आप Angular या इसी तरह के साथ काम करना पसंद करते हैं:
import DOMPurify from 'dompurify';
const clean = DOMPurify.sanitize('<b>hello there</b>');
परिणामी HTML को innerHTML का उपयोग करके DOM तत्व में या document.write() का उपयोग करके DOM में लिखा जा सकता है। यह पूरी तरह से आप पर निर्भर है।
ध्यान दें कि डिफ़ॉल्ट रूप से, हम HTML, SVG और MathML की अनुमति देते हैं। यदि आपको केवल HTML की आवश्यकता है, जो कि एक बहुत ही सामान्य उपयोग-मामला हो सकता है, तो आप उसे भी आसानी से सेट कर सकते हैं:
const clean = DOMPurify.sanitize(dirty, { USE_PROFILES: { html: true } });
क्या इसमें कोई फुट-गन (foot-gun) की संभावना है?
खैर, कृपया ध्यान दें, यदि आप पहले HTML को सैनिटाइज़ करते हैं और फिर उसे बाद में संशोधित करते हैं, तो आप आसानी से सैनिटाइज़ेशन के प्रभावों को रद्द कर सकते हैं। यदि आप सैनिटाइज़ किए गए मार्कअप को सैनिटाइज़ेशन के बाद किसी अन्य लाइब्रेरी को देते हैं, तो कृपया सुनिश्चित करें कि वह लाइब्रेरी स्वयं HTML के साथ छेड़छाड़ नहीं करती है। सुरक्षित-उपयोग के नुस्खों और उन टैग्स/एट्रिब्यूट्स के लिए जिन पर दो बार सोचना चाहिए, Security Goals & Threat Model देखें, और यह समझने के लिए कि पोस्ट-प्रोसेसिंग और मार्कअप संदर्भ बदलना सैनिटाइज़ेशन को कैसे विफल करता है, Attack Classes & Bypass History देखें।