T

Text Machine

शक्तिशाली टेक्स्ट टूल्स, आपके ब्राउज़र में

HTML एनकोड

HTML स्पेशल करैक्टर्स को एंटिटी रेफरेंस में एनकोड करें, ताकि वे वेब पेज पर सही ढंग से प्रदर्शित हों और पार्स हों।

इनपुट

HTML एनकोड का उपयोग कैसे करें

  1. 1

    अपना टेक्स्ट या HTML दर्ज करें

    जिस सादे टेक्स्ट को आप एस्केप करना चाहते हैं, या जिन HTML एंटिटीज़ को वापस बदलना चाहते हैं, उन्हें इनपुट बॉक्स में पेस्ट करें।

  2. 2

    encode या decode चुनें

    < > & जैसे अक्षरों को सुरक्षित एंटिटीज़ में बदलने के लिए Encode to HTML Entities पर क्लिक करें, या एंटिटीज़ को वापस पढ़ने योग्य अक्षरों में बदलने के लिए Decode HTML Entities पर।

  3. 3

    आउटपुट की समीक्षा करें

    आउटपुट बॉक्स में बदला हुआ नतीजा जाँचें, और ज़रूरत हो तो उल्टा कन्वर्ज़न जोड़ने के लिए Swap Input/Output का इस्तेमाल करें।

  4. 4

    नतीजा कॉपी करें

    एनकोड या डिकोड किया टेक्स्ट लेने के लिए Copy Output दबाएँ, या फ़ील्ड रीसेट करने के लिए Clear Both दबाएँ।

HTML एन्कोडिंग: विशेष वर्णों को सुरक्षित ढंग से एस्केप करना

HTML एन्कोडिंग का मतलब क्या है

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

रोज़मर्रा के HTML में सचमुच एस्केप किए जाने की ज़रूरत वाले बस मुट्ठी भर वर्ण होते हैं, लेकिन इन्हें सही करना एक ऐसे पेज और एक ऐसे पेज के बीच का फ़र्क है जो सही रेंडर होता है बनाम वह जो टूट जाता है या असुरक्षित बन जाता है। रेफ़रेंस दो रूपों में आते हैं: नामित एंटिटी जैसे &lt;, और संख्यात्मक रेफ़रेंस जैसे &#60; या &#x3C;, जो सब एक ही दृश्य वर्ण बनाते हैं।

मुख्य वर्ण और उनकी एंटिटी

पाँच वर्ण लगभग हर एस्केपिंग ज़रूरत को समेट लेते हैं। एम्परसैंड & बनता है &amp; और किसी भी मैनुअल रूपांतरण में सबसे पहले आना चाहिए, क्योंकि यही हर एंटिटी की शुरुआत करता है। कम-से चिह्न < बनता है &lt; और अधिक-से चिह्न > बनता है &gt;, क्योंकि ये टैग को सीमांकित करते हैं। दोहरा उद्धरण " बनता है &quot; और एकल उद्धरण या एपॉस्ट्रॉफ़ी ' बनता है &#39; (या HTML5 में नामित &apos;), जो विशेषता मानों के भीतर मायने रखते हैं।

एम्परसैंड-पहले वाला नियम एक सूक्ष्म बग को रोकता है। अगर आप < को &lt; से बदलते और उसके बाद ही एम्परसैंड को एस्केप करते, तो आप अपने ताज़ा लिखे &lt; को &amp;lt; में बदल देते और पेज पर शाब्दिक पाठ "&lt;" दिखा देते। हमेशा & को बाक़ी से पहले एन्कोड कीजिए। यह टूल रूपांतरणों को सही क्रम में स्वचालित रूप से लागू करता है, इसलिए आप उस जाल में कभी नहीं फँसते।

हल किया हुआ उदाहरण: एक कोड स्निपेट दिखाना

मान लीजिए आप चाहते हैं कि कोई पेज एक लिंक रेंडर करने के बजाय शाब्दिक रूप से पाठ <a href="x">Tom & Jerry</a> दिखाए। हर विशेष वर्ण को उसके रेफ़रेंस से बदल दिया जाता है। खुलने वाला कोण कोष्ठक बनता है &lt;, बंद होने वाला बनता है &gt;, विशेषता के चारों ओर के दोहरे उद्धरण बनते हैं &quot;, और नामों के बीच का एम्परसैंड बनता है &amp;।

एन्कोड किया परिणाम है &lt;a href=&quot;x&quot;&gt;Tom &amp; Jerry&lt;/a&gt;। किसी HTML फ़ाइल में पेस्ट किए जाने पर, ब्राउज़र मूल स्रोत कोड को इसे किसी कार्यशील ऐंकर तत्व में बदलने के बजाय स्क्रीन पर दृश्य रूप से छाप देता है, ठीक वैसे ही जैसे कोई ट्यूटोरियल या दस्तावेज़ पेज उदाहरण मार्कअप दिखाता है।

एन्कोडिंग XSS को क्यों रोकती है

क्रॉस-साइट स्क्रिप्टिंग (XSS) एक ऐसा हमला है जिसमें एक हमलावर किसी ऐसे फ़ील्ड के ज़रिए, जो बाद में दूसरे उपयोगकर्ताओं को दिखाया जाता है — जैसे कोई टिप्पणी, उपयोगकर्ता-नाम, या खोज-शब्द — पेज में HTML या JavaScript इंजेक्ट कर देता है। अगर कोई साइट उस अविश्वसनीय पाठ को बिना एस्केप किए पेज में डाल देती है, तो किसी script टैग जैसा पेलोड पीड़ित के ब्राउज़र में साइट के विशेषाधिकारों के साथ क्रियान्वित हो जाता है, जिससे सत्र-चोरी और उससे भी बुरा संभव हो जाता है।

एन्कोडिंग हमले को उसकी जड़ में बेअसर कर देती है। जब खतरनाक वर्ण एस्केप कर दिए जाते हैं, तो एक इंजेक्ट किया गया <script>alert(1)</script> किसी क्रियान्वयन योग्य तत्व के बजाय हानिरहित दृश्य पाठ — &lt;script&gt;alert(1)&lt;/script&gt; — के रूप में संग्रहीत और रेंडर होता है। इस श्रेणी की भेद्यता के खिलाफ़ सबसे भरोसेमंद अकेला बचाव यह है कि अविश्वसनीय डेटा के हर टुकड़े को ठीक उसी बिंदु पर HTML-एन्कोड किया जाए जहाँ वह पेज में लिखा जाता है।

तत्व-सामग्री बनाम विशेषता संदर्भ

आप डेटा कहाँ रखते हैं, यह बदल देता है कि कौन-से वर्ण खतरनाक हैं, और हर जगह के लिए एक अकेला एस्केपिंग नियम पर्याप्त नहीं होता। तत्व-सामग्री के भीतर — किसी खुलने वाले और बंद होने वाले टैग के बीच का पाठ — महत्वपूर्ण वर्ण <, >, और & हैं। किसी विशेषता मान के भीतर, वह उद्धरण वर्ण जो विशेषता को सीमांकित करता है वही वह है जो किसी हमलावर को मान से बाहर निकलने देता है, इसलिए वहाँ एम्परसैंड के अलावा " और ' को भी एन्कोड करना ज़रूरी है।

सबसे मज़बूत आदत यह है कि आप हमेशा अपनी विशेषताओं को उद्धरण में रखें और < > तथा & के साथ मेल खाने वाले उद्धरण वर्ण को भी एन्कोड करें। एक बिना-उद्धरण वाली विशेषता को सुरक्षित करना कहीं अधिक कठिन है, क्योंकि तब स्पेस और कई अन्य वर्ण मान से बाहर निकल सकते हैं। कुछ पूरी तरह अलग संदर्भ भी होते हैं — किसी script ब्लॉक, किसी style ब्लॉक, या किसी URL विशेषता के भीतर — जहाँ अकेली HTML एस्केपिंग अपर्याप्त है और इसके बजाय एक संदर्भ-विशिष्ट एन्कोडिंग की ज़रूरत होती है।

एन्कोडिंग बनाम डिकोडिंग, और हर एक कब करनी है

एन्कोडिंग वह दिशा है जिसे आप आउटपुट बनाते समय चुनते हैं: कच्चा पाठ लीजिए और Encode क्रिया से सुरक्षित मार्कअप बनाइए। डिकोडिंग इसका उल्टा है, Decode क्रिया से एंटिटी को वापस उनके शाब्दिक वर्णों में बदलना, जो तब उपयोगी है जब आपके पास एस्केप किया स्रोत हो — किसी डेटाबेस, किसी ईमेल, या किसी दूसरे टूल से कॉपी किया हुआ — और आप अंतर्निहित पाठ को पढ़ना या संपादित करना चाहते हों।

एक व्यावहारिक कार्यप्रवाह Swap बटन के साथ दोनों का उपयोग करता है। आप किसी संग्रहीत स्निपेट को सादे वर्णों में डिकोड कर सकते हैं, उसे संपादित कर सकते हैं, फिर संपादित संस्करण को सुरक्षित प्रदर्शन के लिए फिर से एन्कोड कर सकते हैं, और यह सब बिना दोबारा टाइप किए। बस समय का सुनहरा नियम याद रखिए: एन्कोडिंग आउटपुट के क्षण पर कीजिए, इनपुट के क्षण पर नहीं, क्योंकि बहुत जल्दी एस्केप करना उस डेटा को भ्रष्ट कर सकता है जिसे भंडारण में कच्चा बने रहना चाहिए।

जिन आम ग़लतियों से बचना है

क्लासिक ग़लती दोहरी एन्कोडिंग है: पहले से एस्केप किए पाठ को एन्कोडर से फिर चलाना, जो &amp; को &amp;amp; में बदल देता है और आपके उपयोगकर्ताओं को शाब्दिक "&amp;" दिखाता है। ठीक एक बार एन्कोड कीजिए, और केवल आउटपुट सीमा पर। इसका एक निकट संबंधी है डेटा को अपने डेटाबेस में जाते समय और बाहर आते समय दोनों बार एस्केप करना, जिससे वही गड़बड़ परिणाम बनता है।

एक और बार-बार होने वाली ग़लती यह मान बैठना है कि HTML एस्केपिंग हर संदर्भ की रक्षा करती है। यह किसी JavaScript स्ट्रिंग, किसी CSS मान, या javascript: से शुरू होने वाले किसी href के भीतर रखे डेटा की रक्षा नहीं करती; उनके अपने एन्कोडिंग नियमों की ज़रूरत होती है। आख़िर में, ऐसा अधूरा एस्केपर खुद से मत बनाइए जो एम्परसैंड या विशेषता-उद्धरणों को भूल जाए — ठीक उन्हीं अंतरालों से बग और XSS फिसल जाते हैं। एक पूर्ण, सही-क्रम वाले एन्कोडर को यह काम करने दीजिए।

अक्सर पूछे जाने वाले प्रश्न

कौन-से अक्षर HTML एंटिटीज़ में एनकोड होते हैं?
< (&lt;), > (&gt;), & (&amp;), और उद्धरण चिह्न जैसे आरक्षित व विशेष अक्षरों को उनके नामित या संख्यात्मक HTML एंटिटीज़ से बदल दिया जाता है। इससे आप अक्षरों को पेज पर ज्यों का त्यों दिखा सकते हैं, बजाय इसके कि ब्राउज़र उन्हें मार्कअप समझकर व्याख्या करे।
एनकोडिंग XSS रोकने में कैसे मदद करती है?
< और > जैसे अक्षरों को एंटिटीज़ में बदलकर, किसी भी उपयोगकर्ता-आपूर्ति मार्कअप या स्क्रिप्ट टैग को निष्पादित होने के बजाय दृश्यमान टेक्स्ट के रूप में रेंडर किया जाता है। पेज में डालने से पहले अविश्वसनीय इनपुट को एनकोड करना cross-site scripting (XSS) के विरुद्ध एक मुख्य बचाव है।
क्या मैं एंटिटीज़ को वापस सामान्य टेक्स्ट में बदल सकता हूँ?
हाँ। Decode HTML Entities बटन प्रक्रिया को उलट देता है, &amp; और &#39; जैसी एंटिटीज़ को वापस मूल & और ' अक्षरों में बदलता है ताकि आप कच्चे टेक्स्ट को पढ़ या दोबारा इस्तेमाल कर सकें।
Swap बटन किसलिए है?
Swap Input/Output आपके मौजूदा नतीजे को इनपुट फ़ील्ड में ले जाता है, जो सामग्री के राउंड-ट्रिप के लिए सुविधाजनक है, उदाहरण के लिए किसी स्निपेट को डिकोड करना और फिर बिना दोबारा टाइप किए संपादित संस्करण को फिर से एनकोड करना।
क्या मेरा इनपुट किसी सर्वर पर भेजा जाता है?
नहीं। एनकोडिंग और डिकोडिंग पूरी तरह आपके ब्राउज़र में चलती हैं, इसलिए आपका टेक्स्ट और कोई भी संवेदनशील HTML कभी आपके डिवाइस से बाहर नहीं जाता। यह टूल मुफ़्त है और इसमें साइन-अप की ज़रूरत नहीं।

संबंधित टूल्स

इन उपयोगी टूल्स के साथ आगे बढ़ें

URL Encoder / Decoder

Base64 एन्कोड / डिकोड

HTML से टेक्स्ट कनवर्टर

JSON फ़ॉर्मेटर

Regex परीक्षक

JWT डिकोडर