हिन्दी

डेवलपर टूल · HTML इकाई एस्केपर

स्क्रिप्ट, ऑनक्लिक और href विशेषताओं के अंदर HTML से बचना पर्याप्त क्यों नहीं है

· यह क्यों मायने रखती है

HTML सुरक्षा URL एन्कोडिंग

क्यों HTML से बचना स्क्रिप्ट के अंदर पर्याप्त नहीं है, ब्राउज़र-सुरक्षित वर्ण-संदर्भ आरेख के रूप में दिखाए गए ऑनक्लिक और href विशेषताएँ
मूल ToolAcre वेक्टर चित्रण

एंटिटी एस्केपिंग HTML टेक्स्ट और विशेषता मानों की सुरक्षा करती है, लेकिन स्क्रिप्ट ब्लॉक, इवेंट हैंडलर या URL के अंदर का मान एक अलग पार्सर द्वारा पढ़ा जाता है। यह पोस्ट प्रत्येक संदर्भ और उसके लिए आवश्यक एन्कोडिंग की व्याख्या करती है।

बच गया मान जो अभी भी निष्पादित है - ऑनक्लिक हैंडलर के अंदर एक उपयोगकर्ता स्ट्रिंग और "इसे सहेजा क्यों नहीं गया

बच गया मान जो अभी भी निष्पादित है - एक ऑनक्लिक हैंडलर के अंदर एक उपयोगकर्ता स्ट्रिंग और "इसे सहेजा क्यों नहीं गया। एक ऑनक्लिक विशेषता को HTML के रूप में पार्स किया जाता है और फिर JavaScript के रूप में संकलित किया जाता है। केवल HTML डिलीमीटर को एन्कोड करना ब्राउज़र द्वारा उस विशेषता मान को डीकोड करने के बाद भी एक खतरनाक प्रोग्राम छोड़ सकता है।

HTML से बचने वाले जावास्क्रिप्ट संदर्भ को सत्यापित करने के लिए, एक ऐसे डेवलपर के लिए एस्केप्ड मान का निर्माण करें जो सब कुछ से बच गया और फिर भी उसे XSS रिपोर्ट मिली। अभी भी निष्पादित उपयोगकर्ता को सुरक्षित रखें जबकि नेस्टेड-पार्सर संदर्भ ऑनक्लिक के अंदर स्ट्रिंग उत्पन्न करता है; पहचानें कि हैंडलर कहां है और क्यों quot का उपभोग किया जाता है। इसके बारे में अवलोकन, इसे सहेजा नहीं गया, केवल HTML पाठ से संबंधित है।

एक दस्तावेज़, कई भाषाएँ - HTML, JavaScript, URL और CSS प्रत्येक के अपने स्वयं के पार्सर और एस्केप नियम हैं

एक दस्तावेज़, कई भाषाएँ - HTML, JavaScript, URL और CSS प्रत्येक के अपने स्वयं के पार्सर और एस्केप नियम हैं। एक एकल दस्तावेज़ HTML, JavaScript, URL और CSS पार्सर्स को लागू कर सकता है। प्रत्येक भाषा विराम चिह्नों को अलग-अलग अर्थ प्रदान करती है, इसलिए एक सामान्य "बच गया" ध्वज प्रत्येक गंतव्य का सुरक्षित रूप से वर्णन नहीं कर सकता है।

एक डेवलपर जो सब कुछ से बच गया और फिर भी उसे XSS रिपोर्ट मिली, वह HTML जावास्क्रिप्ट URL रिकॉर्ड करके और नेस्टेड-पार्सर संदर्भ पास से पहले एक दस्तावेज़ को कई भाषाओं में परीक्षण कर सकता है। CAसएस की तुलना प्रत्येक के अपने बाद से करें और स्वयं के पार्सर और एस्केप के लिए जिम्मेदार पार्सर का पता लगाएं। यह HTML एस्केपिंग जावास्क्रिप्ट संदर्भ परिणाम नियमों की व्याख्या करता है, निष्पादन योग्य संदर्भों की नहीं।

<script> के अंदर - वहां संस्थाओं को डिकोड क्यों नहीं किया जाता है और इसके बजाय JSON या JavaScript स्ट्रिंग एस्केपिंग की आवश्यकता होती है

<script> के अंदर - वहां संस्थाओं को डिकोड क्यों नहीं किया जाता है और इसके बजाय JSON या JavaScript स्ट्रिंग एस्केपिंग की आवश्यकता होती है। स्क्रिप्ट के कच्चे पाठ के अंदर, HTML नामित संदर्भ सामान्य पाठ की तरह डिकोड नहीं किए जाते हैं। एक सिद्ध सीरिएलाइज़र के साथ डेटा को JSON के रूप में क्रमबद्ध करें, इनलाइन स्क्रिप्ट इंटरपोलेशन से बचें, और क्लोजिंग-स्क्रिप्ट अनुक्रमों का ध्यान रखें।

स्क्रिप्ट के अंदर एक छोटे नेस्टेड-पार्सर संदर्भ नमूने में इकाइयों को अलग करें। शो को वहां शाब्दिक स्रोत के रूप में डिकोड नहीं किया गया है, इसके गंतव्य के लिए फॉलो और जेसन या जावास्क्रिप्ट का पालन करें, और API रीडिंग स्ट्रिंग से बचने का नाम आवश्यक है। HTML से बचने के लिए जावास्क्रिप्ट संदर्भ, इसके बजाय पार्सर-बाध्य साक्ष्य बना हुआ है।

इवेंट हैंडलर विशेषताएँ - पहले HTML के रूप में डिकोड किया गया और फिर JavaScript के रूप में चलाया गया, इसलिए भागने की दो परतें लागू होती हैं

इवेंट हैंडलर विशेषताएँ - पहले HTML के रूप में डिकोड की गईं और फिर JavaScript के रूप में चलाई गईं, इसलिए भागने की दो परतें लागू होती हैं। इवेंट-हैंडलर विशेषताएँ दो व्याकरणों को जोड़ती हैं और इनसे बचना चाहिए। AddEventListener के साथ बाइंडिंग व्यवहार डेटा को निष्पादन योग्य स्रोत से दूर रखता है और नेस्टेड HTML-plus-JavaScript से बचने की आवश्यकता को हटा देता है।

डिकोड किए गए इवेंट हैंडलर विशेषताओं को एक सीमा प्रयोग के रूप में मानें। एक डेवलपर जो सब कुछ से बच गया और फिर भी उसे XSS रिपोर्ट मिली, उसे पहले html के रूप में बनाए रखना चाहिए और, एक नेस्टेड-पार्सर संदर्भ ऑपरेशन करना चाहिए, और दो परतों को बदलने से पहले निरीक्षण करना चाहिए और फिर चरित्र द्वारा जावास्क्रिप्ट वर्ण के रूप में चलाना चाहिए। लागू होने से बचने का दावा इस HTML परत पर रुकता है।

href और src - विशेषता के लिए भागने वाले मूल्य प्लस इकाई के लिए प्रतिशत-एन्कोडिंग, और जावास्क्रिप्ट: योजना समस्या

href और src - विशेषता के लिए मूल्य प्लस इकाई से बचने के लिए प्रतिशत-एन्कोडिंग, और जावास्क्रिप्ट: योजना समस्या। href और src के लिए, पहले URL बनाएं और मान्य करें, अवांछित योजनाओं को अस्वीकार करें, घटकों को प्रतिशत-एन्कोड करें, फिर HTML-अंतिम उद्धृत विशेषता मान से बचें। अकेले इकाई रूपांतरण जावास्क्रिप्ट को अस्वीकार नहीं करता है: URL।

ग्राहक सामग्री के बजाय हानिरहित इनपुट के साथ href और src प्रतिशत को पुन: प्रस्तुत करें। मान के लिए एन्कोडिंग रिकॉर्ड करें, प्लस इकाई के भागने का निरीक्षण करें, और प्रत्येक जानबूझकर नेस्टेड-पार्सर संदर्भ पास की गणना करें। वह HTML एस्केपिंग जावास्क्रिप्ट कॉन्टेक्स्ट ट्रेल एक ऐसे डेवलपर को अनुमति देता है जो सब कुछ से बच गया और फिर भी उसे XSS रिपोर्ट मिली, जो अनुमान लगाए बिना विशेषता और जावास्क्रिप्ट योजना समस्या का मूल्यांकन करता है।

कार्यान्वित उदाहरण: पाठ में, एक विशेषता में, ऑनक्लिक में और href में एक मान रखा गया है - प्रत्येक के लिए सही एन्कोडिंग

कार्यान्वित उदाहरण: पाठ में, एक विशेषता में, ऑनक्लिक में और href में एक मान रखा गया है - प्रत्येक के लिए सही एन्कोडिंग। वही मान टेक्स्ट में HTML एस्केपिंग के माध्यम से, डेटा विशेषता में उद्धृत-विशेषता हैंडलिंग के माध्यम से, कोड में संरचित क्रमबद्धता के माध्यम से, और URL से URL निर्माण प्लस योजना जांच के माध्यम से होता है।

नेस्टेड-पार्सर संदर्भ समीक्षा के दौरान काम किए गए उदाहरण में एक मान, टेक्स्ट में रखा गया और ऑनक्लिक में एक विशेषता को साथ-साथ रखा गया। एक डेवलपर जो सब कुछ से बच गया और फिर भी उसे XSS रिपोर्ट मिली, वह यह तय कर सकता है कि रूपांतरण या डाउनस्ट्रीम में href में बदलाव हुआ है या नहीं। सामान्य सुरक्षा दावों में से प्रत्येक के लिए सही एन्कोडिंग के बारे में HTML से बचने वाले जावास्क्रिप्ट संदर्भ निष्कर्ष को रखें।

इसमें क्या शामिल नहीं है - CSS इंजेक्शन और टेम्पलेट-इंजन-विशिष्ट सहायक

इसमें क्या शामिल नहीं है - CSS इंजेक्शन और टेम्पलेट-इंजन-विशिष्ट सहायक। CSS इंजेक्शन और टेम्पलेट-इंजन-विशिष्ट APआई छोड़े गए हैं क्योंकि वे अतिरिक्त व्याकरण और फ्रेमवर्क अनुबंध पेश करते हैं। सुरक्षित विकल्प APआई का उपयोग करना है जो डेटा को कोड से अलग रखता है।

नेस्टेड-पार्सर संदर्भ चलाने से पहले परिभाषित करें कि यह क्या नहीं करता है। कवर CAसएस इंजेक्शन सहेजें और नियंत्रण के रूप में, टेम्पलेट इंजन विशिष्ट सहायकों के पीछे कोड बिंदुओं का निरीक्षण करें, और नेस्टेड-पार्सर संदर्भ साक्ष्य को अगले दुभाषिया में मैप करें। यह नेस्टेड-पार्सर संदर्भ साक्ष्य को एक ऐसे डेवलपर के लिए ऑडिट करने योग्य बनाता है जो सब कुछ से बच गया और अभी भी जावास्क्रिप्ट संदर्भ से बचने वाले HTML की जांच करने वाली XSS रिपोर्ट प्राप्त हुई है।

टेकअवे: पार्सर के लिए एन्कोड करें जो इसे पढ़ेगा - HTML इकाई एस्केपर HTML परत को कैसे संभालता है, और उसी उत्पाद में URL एनकोडर और डिकोडर URL परत को संभालता है

टेकअवे: पार्सर के लिए एन्कोड करें जो इसे पढ़ेगा - HTML इकाई एस्केपर HTML परत को कैसे संभालता है, और उसी उत्पाद में URL एनकोडर और डिकोडर URL परत को संभालता है। ToolAcre HTML परत को कवर करता है, और इसका URL पैनल URL घटकों का प्रतिनिधित्व कवर करता है। न तो पैनल प्राधिकरण प्रदान करता है, न ही मार्कअप को साफ़ करता है, न ही योजनाओं को मान्य करता है या SQL कथनों की सुरक्षा करता है।

के लिए टेकअवे एन्कोड को एक अवलोकन योग्य नेस्टेड-पार्सर संदर्भ आउटपुट से कनेक्ट करें। पार्सर रखें जो वन-पास परिणाम के बगल में पढ़ेगा, फिर सत्यापित करें कि HTML इकाई एस्केपर में कैसे प्रवेश करता है इसे संभालता है। एक डेवलपर जो सब कुछ से बच गया और अभी भी XSS रिपोर्ट प्राप्त कर चुका है, वह अब html परत की समीक्षा कर सकता है और जावास्क्रिप्ट संदर्भ खोज से बचने वाले एक संकीर्ण HTML के रूप में इसकी समीक्षा कर सकता है। इस आलेख के पीछे व्यावहारिक निर्णय विशिष्ट है: इकाई से बचना HTML पाठ और विशेषता मानों की सुरक्षा करता है, लेकिन स्क्रिप्ट ब्लॉक, ईवेंट हैंडलर या URL के अंदर का मान एक अलग पार्सर द्वारा पढ़ा जाता है। यह पोस्ट प्रत्येक संदर्भ और उसके लिए आवश्यक एन्कोडिंग की व्याख्या करती है। पाठक की कार्रवाई समान रूप से ठोस है: विशेषता-एस्केपिंग चरण के लिए HTML इकाई एस्केपर से लिंक और पेज लोड के बिना href मान के लिए URL एनकोडर और डिकोडर पैनल पर स्विच करना प्रदर्शित करता है।