Skip to main content
CheckTown
डेव टूल

स्ट्रिंग एस्केपिंग: कोड में विशेष अक्षरों को कैसे संभालें

प्रकाशित 6 मिनट का पठन
इस लेख में

स्ट्रिंग एस्केपिंग क्या है?

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

उचित एस्केपिंग के बिना, विशेष वर्ण वाली स्ट्रिंग्स पार्सिंग त्रुटियां, क्रॉस-साइट स्क्रिप्टिंग (XSS) और SQL इंजेक्शन जैसी सुरक्षा कमज़ोरियां पैदा करती हैं, या दूषित आउटपुट उत्पन्न करती हैं। स्ट्रिंग्स को कब और कैसे एस्केप करना है यह समझना, डेटा आदान-प्रदान, वेब सामग्री या डेटाबेस संचालन के साथ काम करने वाले किसी भी डेवलपर के लिए एक बुनियादी कौशल है।

एस्केप प्रारूप समझाए गए

अलग-अलग संदर्भों के अलग-अलग एस्केपिंग नियम होते हैं। यहां सबसे सामान्य प्रारूप और वे किससे रक्षा करते हैं, प्रस्तुत हैं:

  • JSON एस्केपिंग — उद्धरण चिह्नों (\"), बैकस्लैश (\\) और नियंत्रण वर्णों (\n, \t, \r) को बैकस्लैश से एस्केप करती है। JSON डेटा संरचनाओं में स्ट्रिंग्स को शामिल करते समय हमेशा आवश्यक
  • HTML एस्केपिंग — < को &lt;, > को &gt;, & को &amp;, " को &quot; और ' को &#39; में बदलती है। ब्राउज़र को उपयोगकर्ता सामग्री को HTML टैग या विशेषताओं के रूप में समझने से रोकती है
  • URL एन्कोडिंग — असुरक्षित वर्णों को %XX हेक्स कोड से बदलती है (स्थान बनता है %20, @ बनता है %40)। यह सुनिश्चित करती है कि विशेष वर्ण क्वेरी पैरामीटर तोड़े बिना URL से होकर गुज़रें
  • SQL एस्केपिंग — एकल उद्धरण चिह्नों को दोगुना करती है (' बनता है '') और बैकस्लैश को एस्केप करती है। यह सुनिश्चित करके कि उपयोगकर्ता इनपुट क्वेरी संरचना को संशोधित न कर सके, SQL इंजेक्शन हमलों को रोकती है
  • रेगेक्स एस्केपिंग — . * + ? { } [ ] ( ) ^ $ | \ जैसे मेटावर्णों से पहले बैकस्लैश जोड़ती है। यह इन वर्णों को रेगुलर एक्सप्रेशन में शाब्दिक रूप से मिलान करने की अनुमति देती है

सामान्य उपयोग के मामले

स्ट्रिंग एस्केपिंग सॉफ़्टवेयर विकास जीवनचक्र में हर जगह दिखाई देती है। यहां वे परिदृश्य दिए गए हैं जहां आप इसका सबसे अधिक उपयोग करेंगे:

  • कोड में उपयोगकर्ता इनपुट शामिल करना — जब उपयोगकर्ता द्वारा प्रदान किए गए मानों को JSON, HTML टेम्पलेट या SQL क्वेरी में डाला जाता है, तो उचित एस्केपिंग सिंटैक्स त्रुटियों और सुरक्षा कमज़ोरियों दोनों को रोकती है
  • फ़ॉर्म इनपुट को सैनिटाइज़ करना — वेब एप्लिकेशन को ब्राउज़र में रेंडर करने से पहले उपयोगकर्ता द्वारा सबमिट की गई सामग्री को एस्केप करना चाहिए, ताकि उन XSS हमलों को रोका जा सके जो सत्र कुकीज़ चुरा सकते हैं या उपयोगकर्ताओं को पुनर्निर्देशित कर सकते हैं
  • API पेलोड बनाना — जब प्रोग्रामेटिक रूप से JSON अनुरोध बॉडी बनाई जाती है, तो सभी स्ट्रिंग मानों को उचित रूप से एस्केप किया जाना चाहिए ताकि वैध JSON उत्पन्न हो जिसे प्राप्तकर्ता API पार्स कर सके

निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं

स्ट्रिंग एस्केप टूल आज़माएं →

एस्केप बनाम एन्कोड: क्या अंतर है?

एस्केपिंग और एन्कोडिंग अक्सर भ्रमित कर देती हैं क्योंकि दोनों टेक्स्ट को रूपांतरित करती हैं, लेकिन ये अलग-अलग उद्देश्यों की पूर्ति करती हैं। एस्केपिंग वर्णों में मार्कर (जैसे बैकस्लैश) जोड़ती है ताकि उन्हें उनके वर्तमान संदर्भ में शाब्दिक रूप से माना जाए। आउटपुट उसी प्रारूप में रहता है — एक JSON-एस्केप की गई स्ट्रिंग अभी भी JSON ही होती है।

एन्कोडिंग डेटा को एक प्रतिनिधित्व से पूरी तरह दूसरे में बदल देती है। Base64 एन्कोडिंग बाइनरी डेटा को ASCII टेक्स्ट में बदल देती है। URL एन्कोडिंग वर्णों को URL में सुरक्षित संचरण के लिए प्रतिशत-हेक्स अनुक्रमों में बदल देती है। मुख्य अंतर यह है: एस्केपिंग प्रारूप को बनाए रखती है, एन्कोडिंग उसे बदल देती है।

सुझाव और सर्वोत्तम अभ्यास

उचित स्ट्रिंग एस्केपिंग बग, सुरक्षा छिद्रों और डेटा भ्रष्टाचार को रोकती है। सामान्य गलतियों से बचने के लिए इन अभ्यासों का पालन करें:

  • सीमा पर एस्केप करें — स्ट्रिंग्स को हमेशा उस बिंदु पर एस्केप करें जहां वे किसी नए संदर्भ में प्रवेश करती हैं (जैसे HTML में डालते समय, SQL बनाते समय), न कि उससे पहले या बाद में
  • दोहरी-एस्केपिंग से बचें — यदि आपका फ़्रेमवर्क पहले से ही आउटपुट एस्केप करता है (जैसे Vue.js टेम्पलेट इंटरपोलेशन), तो मैन्युअल एस्केपिंग जोड़ने से आउटपुट में दृश्यमान बैकस्लैश या एंटिटी कोड उत्पन्न होते हैं
  • संदर्भ-विशिष्ट एस्केपिंग का उपयोग करें — HTML एस्केपिंग SQL इंजेक्शन से रक्षा नहीं करती, और SQL एस्केपिंग XSS को नहीं रोकती। हमेशा वही एस्केपिंग विधि उपयोग करें जो लक्षित संदर्भ से मेल खाती हो

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

मुझे स्ट्रिंग्स को मैन्युअल रूप से बनाम किसी लाइब्रेरी का उपयोग करके कब एस्केप करना चाहिए?

मैन्युअल एस्केपिंग की तुलना में हमेशा लाइब्रेरी फ़ंक्शन को प्राथमिकता दें। भाषाएं और फ़्रेमवर्क अंतर्निर्मित एस्केपिंग उपयोगिताएं प्रदान करते हैं (जैसे JavaScript में encodeURIComponent, PHP में htmlspecialchars, या SQL के लिए पैरामीटराइज़्ड क्वेरी) जो किनारे के मामलों को सही ढंग से संभालती हैं। मैन्युअल एस्केपिंग त्रुटि-प्रवण होती है और असामान्य वर्णों को छोड़ देती है।

क्या स्ट्रिंग एस्केपिंग सभी XSS हमलों को रोकती है?

HTML एस्केपिंग < > & " वर्णों को निष्प्रभावी करके अधिकांश XSS हमलों को रोकती है। हालांकि, यह सभी वेक्टरों से रक्षा नहीं करती। JavaScript संदर्भ, CSS प्रॉपर्टी या URL विशेषताओं में डाली गई सामग्री के लिए अतिरिक्त संदर्भ-विशिष्ट सैनिटाइज़ेशन की आवश्यकता होती है। Content Security Policy (CSP) हेडर के साथ एक स्तरित रक्षा सबसे मज़बूत सुरक्षा प्रदान करती है।

जब डेटा कई प्रारूपों से होकर गुज़रता है, तो मुझे किस क्रम में एस्केप करना चाहिए?

पहले सबसे भीतरी संदर्भ के लिए एस्केप करें, फिर बाहर की ओर काम करें। उदाहरण के लिए, यदि आप किसी स्ट्रिंग को JSON में शामिल कर रहे हैं जिसे HTML विशेषता में रखा जाएगा, तो पहले मान को JSON-एस्केप करें, फिर पूरी JSON स्ट्रिंग को HTML-एस्केप करें। क्रम को उलटने से दोहरी-एस्केप या गलत तरीके से एस्केप किया गया आउटपुट उत्पन्न होता है।

संबंधित टूल