डेवलपर टूल · HTML WYSIWYG एडिटर
चिपकाया गया HTML को सैनिटाइज करना: आपके CMS या ईमेल तक पहुंचने से पहले क्या उतारना है
· यह काम किस प्रकार करता है
HTML सुरक्षा पाठ-सफाई
बताता है कि एक HTML सैनिटाइज़र क्या करता है, अनुमत सूचीबद्ध टैग और विशेषताओं से लेकर हटाई गई स्क्रिप्ट और न्यूट्रलाइज्ड URL तक, और कैसे पहले मार्कअप का निरीक्षण करने से सैनिटाइज़र नियमों को लिखना आसान हो जाता है।
चिपकाया गया स्निपेट जिस पर ऑनक्लिक होता है - रिच-टेक्स्ट इनपुट में छिपे जोखिम के साथ खुलता है
एक चिपकाया गया एंकर एक निर्दोष गंतव्य के बगल में एक ऑनक्लिक छिपा सकता है। ToolAcre प्रत्येक विशेषता नाम को छोटा कर देता है और स्वीकृत तत्व के लिए केवल विशेषताओं को स्पष्ट रूप से सूचीबद्ध रखता है, इसलिए इसके आवरण में बदलाव होने पर भी ऑनक्लिक गायब हो जाता है। निष्कासन रिपोर्ट चुपचाप अपरिवर्तित स्रोत प्रस्तुत करने के बजाय उस ईवेंट हैंडलर की पहचान करती है।
यह सीमा रिच पेस्ट डालने से पहले संचालित होती है, जब स्रोत विज़ुअल मोड में लौटता है, कॉपी करने से पहले, सादा-पाठ निष्कर्षण से पहले और फिर पूर्वावलोकन दस्तावेज़ बनाते समय। दोहराव क्रियाओं के बीच आकस्मिक बाईपास को कम करता है, लेकिन प्रोजेक्ट अभी भी हाथ से लिखे गए टोकननाइज़र को सामान्य-उद्देश्य XSS फ़िल्टर कहने से इनकार करता है।
क्यों अनुमति सूचियाँ ब्लॉक सूचियों को मात देती हैं - यह बताता है कि हर खतरनाक निर्माण को सूचीबद्ध करने की कोशिश करने की तुलना में जो अनुमति है उसका नामकरण करना अधिक सुरक्षित है
एक अनुमति सूची अनुमत संरचना के नामकरण से शुरू होती है: पैराग्राफ, शीर्षक, सिमेंटिक इनलाइन तत्व, सूचियाँ, विवरण सूचियाँ, उद्धरण, कोड-जैसे तत्व और एंकर। एक अज्ञात साधारण रैपर पाठ को बरकरार रखते हुए अपना टैग खो देता है। एक खतरनाक कंटेनर जैसे स्क्रिप्ट, स्टाइल, आईफ्रेम, फॉर्म, SVG या MathML भी अपनी सामग्री खो देता है।
एक ब्लॉकलिस्ट को प्रत्येक खतरनाक या असमर्थित निर्माण का पूर्वानुमान लगाने की आवश्यकता होगी। अनुमति सूची जो नहीं समझती उसे अस्वीकार कर देती है। यह एक एडिटर के प्रतिबंधित आउटपुट के लिए एक मजबूत विकल्प है, फिर भी यह अपने टोकननाइज़र से बंधा हुआ है। जानबूझकर विकृत इनपुट शामिल होने पर ब्राउज़र HTML5 त्रुटि पुनर्प्राप्ति एक छोटे पार्सर से एक अलग ट्री उत्पन्न कर सकती है।
टैग, विशेषताएँ और URL योजनाएँ - एक सैनिटाइज़र फ़िल्टर की तीन परतों को कवर करती हैं, प्रत्येक के लिए विशिष्ट निर्णय के साथ
फ़िल्टरिंग तीन परतों पर होती है। तत्व संरचनात्मक शब्दावली तय करते हैं। प्रति-तत्व विशेषताएँ केवल कुछ मानों की अनुमति देती हैं जैसे लिंक href और शीर्षक, उद्धरण उद्धरण, संक्षिप्त नाम शीर्षक, और आदेशित-सूची प्रारंभ और प्रकार। URL निरीक्षण फिर इकाइयों को डीकोड करता है, एक जांच से नियंत्रण और रिक्त स्थान हटाता है, और परिणामी योजना की जांच करता है।
स्वीकृत योजनाएँ http, https, mailto, tel और ftp हैं, साथ ही बिना किसी स्पष्ट योजना के सापेक्ष रूप भी हैं। JavaScript, डेटा, फ़ाइल, ब्लॉब, वीबीस्क्रिप्ट और इसके बारे में उदाहरण परीक्षणों में अस्वीकार कर दिए जाते हैं। बचे हुए लिंक रिले मान प्राप्त करते हैं, लेकिन वह जोड़ गंतव्य नीति या लिंक समीक्षा का विकल्प नहीं है।
शैलियाँ: स्ट्रिप, अनुमति या पुनः लिखना - इनलाइन स्टाइल हैंडलिंग पर चर्चा करता है और क्यों कई सिस्टम इसे पूरी तरह से छोड़ देते हैं
शैली विशेषताएँ थोक में हटा दी जाती हैं। मॉड्यूल घोषणाओं को पार्स करने, सुरक्षित उपसमूह बनाए रखने या डिज़ाइन टोकन को फिर से लिखने का प्रयास नहीं करता है। वह नीति कॉपी किए गए स्वरूप और CSS-आधारित अनुरोध को एक साथ हटा देती है। क्लास, ID और डेटा विशेषताएँ भी गायब हो जाती हैं, जिससे पोर्टेबल लेकिन जानबूझकर कम अभिव्यंजक मार्कअप उत्पन्न होता है।
वास्तविक शैली की आवश्यकता वाले सिस्टम को एक अलग समीक्षा नीति की आवश्यकता होती है। CSS सैनिटाइज़र के बिना इस अनुमति सूची में स्टाइल जोड़ने से इसकी सुरक्षा सतह महत्वपूर्ण रूप से बदल जाएगी। वर्तमान कार्यान्वयन मनमाने ढंग से शत्रुतापूर्ण टुकड़ों के लिए CSS सुरक्षा को हल करने का दावा करने के बजाय उस समस्या से बचता है।
व्यावहारिक उदाहरण: नियम को ToolAcre की दस्तावेज़ीकृत अनुमति सूची से प्राप्त करें, न कि किसी वर्ड-विशिष्ट फिक्स्चर से
`<div class="WordSection"><p style="color:red" onclick="x()">Notice <strong>today</strong></p></div>` से प्रारंभ करें. डिव को खोल दिया गया है, वर्ग और शैली जीवित नहीं रह सकते हैं, ऑनक्लिक हटा दिया गया है, और पैराग्राफ प्लस मजबूत तत्व बना हुआ है। परिणाम सामान्य नीति का अनुसरण करता है, बिना यह बताए कि किस एप्लिकेशन ने रैपर का उत्पादन किया है।
एक जावास्क्रिप्ट href और एक स्क्रिप्ट ब्लॉक जोड़ें। एंकर अपने दृश्यमान शब्दों को रखता है लेकिन href खो देता है; स्क्रिप्ट और बॉडी गायब हो जाती है। रिपोर्ट किए गए कारण पढ़ें. यह अभ्यास एक सर्वर नीति को परिभाषित करने में मदद करता है, लेकिन ToolAcre के सटीक उपसमुच्चय को आँख बंद करके कॉपी करने से आपके एप्लिकेशन द्वारा आवश्यक तत्वों को छोड़ा जा सकता है या आपके खतरे के मॉडल को URL की अनुमति देने से मना किया जा सकता है।
सर्वर-साइड बनाम क्लाइंट-साइड सेनिटाइज़िंग - बताता है कि सर्वर को सेनिटाइज़ क्यों करना चाहिए, भले ही ब्राउज़र पहले ही सेनिटाइज़ कर चुका हो
क्लाइंट फ़िल्टरिंग स्थानीय ड्राफ्टिंग में सुधार करती है लेकिन उपयोगकर्ता-नियंत्रित अनुरोध प्राप्त करने वाले सर्वर पर भरोसा नहीं किया जा सकता है। हमलावर पेज को बायपास कर सकते हैं, सीधे समापन बिंदु पर कॉल कर सकते हैं या पार्सर अंतर का फायदा उठा सकते हैं। सर्वर को अपने रेंडरिंग संदर्भ के लिए कॉन्फ़िगर किए गए HTML5-जागरूक कार्यान्वयन के साथ फिर से पार्स और सैनिटाइज़ करना होगा।
आउटपुट एन्कोडिंग भी अलग रहती है। HTML का उद्देश्य पाठ को मार्कअप के रूप में सम्मिलित करने के बजाय टेम्पलेट से बच जाना चाहिए। जानबूझकर HTML के रूप में प्रस्तुत किए गए एक टुकड़े को आर्किटेक्चर के अनुसार भंडारण या आउटपुट से पहले स्वच्छता की आवश्यकता होती है। एक सैंडबॉक्स्ड पूर्वावलोकन केवल यह साबित करता है कि यह पूर्वावलोकन कोई स्क्रिप्ट, फॉर्म या समान-मूल पहुंच प्रदान नहीं करता है।
यह टूल क्या कवर करता है - संकीर्ण एडिटर आउटपुट फ़िल्टरिंग, सामान्य शत्रुतापूर्ण-इनपुट स्वच्छता नहीं
ToolAcre कार्यपुस्तिका के दावे के विपरीत, अपनी स्वयं की आउटपुट सतह को फ़िल्टर करता है कि यह केवल एक निरीक्षण टूल है। सटीक सुधार संकीर्ण है: यह मनमाने शत्रुतापूर्ण इनपुट के लिए सामान्य प्रयोजन XSS सैनिटाइज़र नहीं है। स्रोत यह स्पष्ट रूप से कहता है और एक संभावित पार्सर अंतर का दस्तावेजीकरण करता है।
iframe ToolAcre के अंदर रेंडरिंग के लिए गहराई में सुरक्षा प्रदान करता है। इसकी खाली सैंडबॉक्स विशेषता कोई स्क्रिप्ट निष्पादन, फॉर्म सबमिशन या समान-मूल पहुंच प्रदान नहीं करती है, और रेफरर नीति नो-रेफरर है। एक बार HTML को कहीं और कॉपी कर लिया जाता है, तो वह फ़्रेम उसकी सुरक्षा नहीं करता है। प्रकाशन सुरक्षा प्राप्तकर्ता प्रणाली से संबंधित है।
टेकअवे: स्थानीय स्तर पर निरीक्षण करें, सर्वर पर सैनिटाइज़ करें - वर्कफ़्लो का सारांश देता है और एडिटर आपको यह देखने में कैसे मदद करता है कि एक सैनिटाइज़र को क्या सामना करना पड़ेगा
स्थानीय स्तर पर निरीक्षण करें, सर्वर पर सेनिटाइज़ करें और संदर्भ के अनुसार प्रस्तुत करें। वे तीन अलग-अलग चरण हैं। ToolAcre चिपकाए गए सामान को प्रकट करने में मदद करता है और एक रूढ़िवादी मसौदा उपसमूह प्रदान करता है, जबकि निष्कासन नोटिस किसी टुकड़े के CMS या ईमेल वर्कफ़्लो तक पहुंचने से पहले नीति प्रभाव को दृश्यमान बनाता है।
किसी सफल पूर्वावलोकन को XSS के विरुद्ध प्रमाण के रूप में प्रचारित न करें। परीक्षण पेलोड का उपयोग केवल डिस्पोजेबल सामग्री में करें, जांच के मामले में कच्चे स्रोत को अलग से संरक्षित करें और गंतव्य स्वच्छता को स्वतंत्र रूप से सत्यापित करें। सुरक्षा दावे ठीक वहीं रुकना चाहिए जहां कोड और रेंडरिंग सीमा रुकती है।