HTML एंटिटीज़ की संपूर्ण गाइड
HTML एंटिटीज़ वेब डेवलपमेंट के सबसे मौलिक लेकिन अक्सर गलत समझे जाने वाले पहलुओं में से एक हैं। वे वह तंत्र हैं जिसके द्वारा ब्राउज़र ऐसे वर्ण प्रदर्शित कर सकते हैं जो अन्यथा HTML मार्कअप के रूप में व्याख्या किए जाएँगे, और वेब सुरक्षा में एक महत्वपूर्ण भूमिका निभाते हैं। चाहे आप क्रॉस-साइट स्क्रिप्टिंग हमलों को रोकने के लिए विशेष वर्णों को एन्कोड कर रहे हों, गणितीय प्रतीकों को प्रदर्शित कर रहे हों, या विभिन्न एन्कोडिंग में सामग्री का सही रेंडरिंग सुनिश्चित कर रहे हों, HTML एंटिटीज़ को समझना प्रत्येक वेब डेवलपर के लिए आवश्यक है।
HTML एंटिटी क्या हैं?
HTML एंटिटीज़ वर्ण अनुक्रम हैं जो HTML में एकल वर्ण का प्रतिनिधित्व करते हैं। एंटिटीज़ एम्परसेंड (&) से शुरू होती हैं और सेमीकोलन (;) से समाप्त होती हैं। जब ब्राउज़र किसी एंटिटी का सामना करता है, तो यह रेंडरिंग के दौरान इसे संबंधित वर्ण से बदल देता है। यह तंत्र आपको HTML में ऐसे वर्ण शामिल करने की अनुमति देता है जो अन्यथा असंभव या समस्याजनक होंगे।
<) एक टैग शुरू करता है, ग्रेटर-दैन चिह्न (>) एक टैग समाप्त करता है, और एम्परसेंड (&) एक एंटिटी संदर्भ शुरू करता है। यदि आप इन वर्णों को मार्कअप के बजाय दृश्यमान सामग्री के रूप में प्रदर्शित करना चाहते हैं, तो आपको उन्हें एंटिटीज़ के रूप में एन्कोड करना होगा।
सामान्य HTML एंटिटीज़
जबकि HTML 2,000 से अधिक नामित एंटिटीज़ को परिभाषित करता है, कुछ मुट्ठी भर का दैनिक वेब डेवलपमेंट में बार-बार उपयोग किया जाता है। ये वे एंटिटीज़ हैं जिनका आप सबसे अधिक सामना करेंगे और उपयोग करेंगे:
पाँच आवश्यक एंटिटीज़
| वर्ण | नामित एंटिटीज़ | दशमलव एंटिटीज़ | हेक्साडेसिमल एंटिटीज़ | उपयोग |
|---|---|---|---|---|
| & | & | & | एंटिटी संदर्भों के साथ अस्पष्टता से बचने के लिए हमेशा एन्कोड किया जाना चाहिए | < |
| < | < | < | HTML टैग खोलने से रोकने के लिए एन्कोड किया जाना चाहिए | > |
| > | > | > | HTML टैग बंद करने से रोकने के लिए एन्कोड किया जाना चाहिए | " |
| " | " | " | डबल-कोटेड विशेषता मानों के अंदर एन्कोड किया जाना चाहिए | ' |
| ' | ' | सिंगल-कोटेड विशेषता मानों के अंदर एन्कोड किया जाना चाहिए | नॉन-ब्रेकिंग स्पेस (लाइन ब्रेक रोकता है) | कॉपीराइट प्रतीक |
सामान्य प्रतीक इकाइयाँ
| वर्ण | नामित एंटिटीज़ | विवरण |
|---|---|---|
| पंजीकृत ट्रेडमार्क प्रतीक | ट्रेडमार्क प्रतीक | एम डैश (लंबा डैश) |
| एन डैश (रेंज के लिए) | बायाँ-पॉइंटिंग डबल एंगल कोटेशन मार्क | दायाँ-पॉइंटिंग डबल एंगल कोटेशन मार्क |
| बुलेट प्रतीक | क्षैतिज दीर्घवृत्त (तीन बिंदु) | Registered trademark symbol |
| ™ | ™
| Trademark symbol |
| — | —
| Em dash (long dash) |
| – | –
| En dash (short dash, for ranges) |
| « | «
| Left-pointing double angle quotation mark |
| » | »
| Right-pointing double angle quotation mark |
| • | •
| Bullet character |
| … | …
| Horizontal ellipsis (three dots) |
संख्यात्मक इकाइयाँ बनाम नामित इकाइयाँ
HTML एंटिटीज़ दो रूपों में आती हैं: नामित और संख्यात्मक। अंतर को समझने से आपको प्रत्येक स्थिति में सही एंटिटी चुनने में मदद मिलती है।
नामित एंटिटीज़
< लेस-दैन चिह्न का प्रतिनिधित्व करता है, © कॉपीराइट प्रतीक का प्रतिनिधित्व करता है। नामित एंटिटीज़ अधिक पठनीय और यादगार हैं, जो आपके HTML स्रोत कोड को अधिक रखरखाव योग्य बनाती हैं। हालाँकि, नामित एंटिटीज़ केवल एक सीमित वर्ण सेट के लिए मौजूद हैं—लगभग 2,000, जबकि Unicode में 140,000 से अधिक वर्ण हैं।
संख्यात्मक इकाइयाँ
संख्यात्मक इकाइयाँ यूनिकोड कोड पॉइंट द्वारा वर्णों को संदर्भित करती हैं। वे दो रूपों में आती हैं: दशमलव और हेक्साडेसिमल। दशमलव संख्यात्मक इकाइयाँ NNN; प्रारूप का उपयोग करती हैं, जहाँ NNN दशमलव कोड पॉइंट है। हेक्साडेसिमल इकाइयाँ HHH; प्रारूप का उपयोग करती हैं, जहाँ HHH हेक्साडेसिमल कोड पॉइंट है। उदाहरण के लिए, कॉपीराइट प्रतीक को © (दशमलव) या © (हेक्साडेसिमल) के रूप में लिखा जा सकता है।
संख्यात्मक इकाइयाँ किसी भी यूनिकोड वर्ण का प्रतिनिधित्व कर सकती हैं, जो उन्हें बिना नामित इकाई संदर्भ वाले वर्णों के लिए आवश्यक बनाती हैं। यदि आपको दुर्लभ CJK वर्ण, ऐतिहासिक लिपि ग्लिफ़ या नामित इकाई के बिना इमोजी प्रदर्शित करने की आवश्यकता है, तो आपको संख्यात्मक रूप का उपयोग करना होगा।
कब किसका उपयोग करें
- <, >, ", ') और ©, ®, ™ जैसे सामान्य प्रतीकों के लिए नामित एंटिटीज़ का उपयोग करें। वे अधिक पठनीय और स्व-दस्तावेज़ीकरण हैं।
- जब आपको ऐसे वर्ण की आवश्यकता हो जिसके लिए कोई नामित एंटिटी मौजूद नहीं है, या जब आप प्रोग्रामेटिक रूप से HTML उत्पन्न कर रहे हों और एक सुसंगत, सार्वभौमिक एन्कोडिंग विधि की आवश्यकता हो, तो संख्यात्मक एंटिटीज़ का उपयोग करें।
- Unicode कोड पॉइंट के साथ काम करते समय हेक्साडेसिमल संख्यात्मक एंटिटीज़ का उपयोग करें, क्योंकि हेक्साडेसिमल Unicode दस्तावेज़ीकरण और वर्ण तालिकाओं में मानक प्रतिनिधित्व है।
HTML एंटिटीज़ का उपयोग कब करें
यह जानना कि एंटिटीज़ का उपयोग कब करना है, उतना ही महत्वपूर्ण है जितना कि यह जानना कि उनका उपयोग कैसे करना है। यहाँ मुख्य परिदृश्य हैं जहाँ एंटिटीज़ आवश्यक या लाभदायक हैं:
1. आरक्षित वर्ण प्रदर्शित करना
< लिखना होगा। यदि आप एक नंगा < लिखते हैं, तो ब्राउज़र इसे HTML टैग की शुरुआत के रूप में पार्स करने का प्रयास करेगा, जो आपके पेज लेआउट को तोड़ सकता है या सुरक्षा भेद्यता पैदा कर सकता है।
2. एम्परसेंड अस्पष्टता को रोकना
एम्परसेंड के बाद अक्षर और सेमीकोलन हमेशा एक एंटिटी संदर्भ के रूप में व्याख्या किया जाता है। यदि आपकी सामग्री में एक एम्परसेंड है जो किसी एंटिटी का हिस्सा नहीं है (जैसे "Tom & Jerry" में), तो आपको इसे & के रूप में एन्कोड करना होगा। बिना एन्कोडेड एम्परसेंड के बाद ऐसा टेक्स्ट जो किसी एंटिटी नाम से मेल खाता है, गलत तरीके से डिकोड हो जाएगा। उदाहरण के लिए, बिना एन्कोडेड "AT&T" "AT&T" के रूप में प्रदर्शित हो सकता है यदि ब्राउज़र &T को एक एंटिटी संदर्भ के रूप में व्याख्या करता है (हालाँकि &T एक मान्य एंटिटी नहीं है, यह व्यवहार तकनीकी रूप से अभी भी गलत है)।
3. गैर-कीबोर्ड वर्ण शामिल करना
एम डैश, कॉपीराइट प्रतीक और गणितीय ऑपरेटर जैसे वर्ण मानक कीबोर्ड पर टाइप करना कठिन हो सकता है। एंटिटीज़ इन वर्णों को शामिल करने का एक विश्वसनीय तरीका प्रदान करती हैं बिना अपने एडिटर के इनपुट विधियों या वर्ण मानचित्रों पर निर्भर हुए। उदाहरण के लिए, — आमतौर पर अपने कीबोर्ड पर एम डैश वर्ण खोजने से अधिक आसान है।
4. नॉन-ब्रेकिंग स्पेस
एंटिटी एक नॉन-ब्रेकिंग स्पेस बनाती है, जो ब्राउज़र को उस स्थान पर लाइन ब्रेक करने से रोकती है। यह संबंधित शब्दों को एक ही पंक्ति में रखने के लिए आवश्यक है, जैसे "10 kg", "अध्याय 3", या ब्रांड नाम जो लाइनों में विभाजित नहीं होने चाहिए। इसका उपयोग आमतौर पर लेआउट में दृश्य रिक्ति बनाने के लिए भी किया जाता है जहाँ CSS उपयुक्त नहीं है।
सुरक्षा प्रभाव: XSS सुरक्षा
HTML एंटिटी एन्कोडिंग क्रॉस-साइट स्क्रिप्टिंग (XSS) हमलों के विरुद्ध रक्षा की सबसे महत्वपूर्ण पंक्तियों में से एक है। XSS तब होता है जब हमलावर अन्य उपयोगकर्ताओं द्वारा देखे जाने वाले वेब पेज में निष्पादन योग्य कोड इंजेक्ट कर सकते हैं। एंटिटी एन्कोडिंग खतरनाक वर्णों को उनके सुरक्षित एंटिटी समकक्षों में परिवर्तित करके इसे रोकती है।
एंटिटी एन्कोडिंग XSS को कैसे रोकती है
खोजता है और पृष्ठ बिना एन्कोडिंग के रेंडर करता है, तो ब्राउज़र स्क्रिप्ट निष्पादित करेगा। हालाँकि, यदि आउटपुट एंटिटी-एन्कोडेड है, तो यह <script>alert('xss')</script> बन जाता है, और ब्राउज़र इसे कोड निष्पादित करने के बजाय शाब्दिक टेक्स्ट के रूप में प्रदर्शित करता है।
संदर्भ-विशिष्ट एन्कोडिंग नियम
एंटिटी एन्कोडिंग HTML सामग्री और विशेषता संदर्भों में काम करती है, लेकिन विभिन्न संदर्भों को विभिन्न एन्कोडिंग रणनीतियों की आवश्यकता होती है:
- <, >, & को एंटिटीज़ के रूप में एन्कोड करें। यह नए HTML टैग के इंजेक्शन को रोकता है।
- <, >, &, ", ' को एंटिटीज़ के रूप में एन्कोड करें। विशेषता मान से बाहर निकलने से रोकने के लिए उद्धरण चिह्नों को एन्कोड किया जाना चाहिए।