JSON इंजेक्शन क्या है और इसे कैसे रोकें?
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन)एक खुला मानक डेटा इंटरचेंज प्रारूप है जिसका उपयोग अनुप्रयोगों के बीच संचार करने के लिए किया जाता है। JSON XML के समान है लेकिन इसकी अत्यधिक हल्की प्रकृति (छोटे फ़ाइल आकार) के कारण XML की तुलना में पढ़ना आसान है।
JSON जावास्क्रिप्ट से लिया गया था - वेब की प्रोग्रामिंग भाषा और दुनिया की सबसे लोकप्रिय। यह इसे इंटरनेट पर पसंदीदा डेटा इंटरचेंज प्रारूप बनाता है। भले ही यह जावास्क्रिप्ट ऑब्जेक्ट शाब्दिक सिंटैक्स से काफी मिलता-जुलता है, इसे जावास्क्रिप्ट से स्वतंत्र रूप से उपयोग किया जा सकता है, और कई प्रोग्रामिंग वातावरण में पढ़ने (पार्स) और JSON उत्पन्न करने की क्षमता होती है।
JSON एक स्ट्रिंग के रूप में मौजूद है—जब आप किसी नेटवर्क पर डेटा संचारित करना चाहते हैं तो यह उपयोगी है। हालाँकि, जब आप डेटा तक पहुँचना चाहते हैं तो इसे मूल जावास्क्रिप्ट ऑब्जेक्ट में परिवर्तित करना होगा। जावास्क्रिप्ट एक वैश्विक JSON ऑब्जेक्ट प्रदान करता है जिसमें एक मूल ऑब्जेक्ट को एक स्ट्रिंग (क्रमबद्धता) में परिवर्तित करने और एक स्ट्रिंग को एक मूल ऑब्जेक्ट (डीसेरिएलाइज़ेशन) में परिवर्तित करने के लिए उपलब्ध तरीके हैं। एक JSON स्ट्रिंग को अपनी फ़ाइल में संग्रहीत किया जा सकता है - जो मूल रूप से .json के एक्सटेंशन के साथ एक टेक्स्ट फ़ाइल है, और एक MIME प्रकार का एप्लिकेशन/json है - जो मूल रूप से इंटरनेट ईमेल प्रोटोकॉल का एक एक्सटेंशन है जो अपने उपयोगकर्ताओं को आदान-प्रदान करने की अनुमति देता है इंटरनेट पर विभिन्न प्रकार के डेटा जैसे चित्र, ऑडियो और वीडियो फ़ाइलें।
कई वेब एप्लिकेशन महत्वपूर्ण जानकारी संग्रहीत करने और एक दूसरे के साथ संवाद करने के लिए इसका उपयोग करते हैं। डेटा संग्रहीत करने के लिए उपयोग किए जाने पर JSON को अक्सर कैश्ड डेटा की तरह माना जाता है और इसमें संभावित रूप से संवेदनशील जानकारी हो सकती है। JSON का उपयोग अक्सर इसके साथ संयोजन में किया जाता है रेस्टफुल एपीआई और AJAX एप्लिकेशन का उपयोग संदेश भेजने के लिए प्रमाणीकरण क्रेडेंशियल जैसी संवेदनशील जानकारी प्रसारित करने के लिए किया जाता है।
वेब अनुप्रयोगों में JSON का व्यापक उपयोग इसे दुर्भावनापूर्ण गतिविधियों का लक्ष्य बनाता है। अकेले JSON से ज़्यादा ख़तरा नहीं है. आख़िरकार, यह केवल एक डेटा-इंटरचेंज प्रारूप है। JSON के साथ वास्तविक सुरक्षा चिंताएँ इसके उपयोग के तरीके से उत्पन्न होती हैं। यदि दुरुपयोग किया जाता है, तो JSON-आधारित एप्लिकेशन JSON अपहरण और JSON इंजेक्शन जैसे हमलों के प्रति संवेदनशील हो सकते हैं। यह आलेख JSON इंजेक्शन हमलों के बारे में हर चीज़ पर चर्चा करेगा, जिसमें उनका पता लगाने और उन्हें रोकने का तरीका भी शामिल है।
JSON इंजेक्शन अटैक क्या है और यह कैसे काम करता है?
वेब अनुप्रयोगों में इंजेक्शन हमले साइबर हमले हैं जो किसी एप्लिकेशन के सामान्य निष्पादन को बदलने के लिए उसमें दुर्भावनापूर्ण कोड इंजेक्ट करना चाहते हैं। इंजेक्शन हमलों से डेटा की हानि, डेटा में संशोधन और सेवा से इनकार हो सकता है। परिणामस्वरूप, इसे वेब एप्लिकेशन सुरक्षा जोखिम में नंबर एक के रूप में सूचीबद्ध किया गया है ओडब्ल्यूएएसपी शीर्ष 10 .
JSON इंजेक्शन एक इंजेक्शन हमले का एक विशिष्ट उदाहरण है, हालांकि यह इंजेक्शन हमले के अन्य रूप जितना सामान्य और खतरनाक नहीं है, जैसे कि एसक्यूएल इंजेक्षन . यदि कोई एप्लिकेशन अविश्वसनीय या अमान्य इनपुट से JSON का निर्माण करता है, तो JSON दस्तावेज़ों और आउटपुट संदेशों के शब्दार्थ में महत्वपूर्ण बदलाव किया जा सकता है। एक हमलावर दुर्भावनापूर्ण कोड डालने के लिए खामियों का फायदा उठा सकता है जो प्रोग्राम के सामान्य निष्पादन को बदल सकता है। कुछ मामलों में, JSON इंजेक्शन के कारण ऐसा हो सकता है क्रॉस साइट स्क्रिप्टिंग या गतिशील कोड मूल्यांकन .
JSON को पारंपरिक रूप से eval() फ़ंक्शन का उपयोग करके पार्स किया गया है, लेकिन यह एक असुरक्षित अभ्यास है। कोई भी कोड जो JSON को जावास्क्रिप्ट ऑब्जेक्ट में डिसेरिएलाइज़ करने के लिए eval() का उपयोग करता है, JSON इंजेक्शन हमलों के लिए खुला है।
JSON इंजेक्शन तब होता है जब:
- एक अविश्वसनीय स्रोत से डेटा को सर्वर द्वारा साफ नहीं किया जाता है और सीधे JSON स्ट्रीम में लिखा जाता है। इसे सर्वर-साइड JSON इंजेक्शन कहा जाता है।
- किसी अविश्वसनीय स्रोत से प्राप्त डेटा को सीधे JavaScript eval फ़ंक्शन का उपयोग करके साफ़ और पार्स नहीं किया जाता है। इसे क्लाइंट-साइड JSON इंजेक्शन कहा जाता है।
यह प्रदर्शित करने के लिए कि सर्वर-साइड JSON इंजेक्शन हमला कैसे काम करता है, आइए एक वेब एप्लिकेशन पर विचार करें जो बिना स्वच्छता के उपयोगकर्ताओं से उपयोगकर्ता नाम और पासवर्ड इनपुट स्वीकार करता है। उपयोगकर्ता द्वारा प्रदान किया गया डेटा (उपयोगकर्ता नाम, पासवर्ड और खाता प्रकार) JSON स्ट्रिंग के रूप में सर्वर साइड पर संग्रहीत किया जाता है। JSON स्ट्रिंग सरल संयोजन का उपयोग करके बनाई गई है जैसा कि नीचे दिए गए कोड में दिखाया गया है:
|_+_|चूंकि एप्लिकेशन इनपुट डेटा को साफ़ नहीं कर रहा है, इसलिए एक दुर्भावनापूर्ण उपयोगकर्ता ने अपने उपयोगकर्ता नाम में अप्रत्याशित डेटा जोड़ने का निर्णय लिया: |_+_|
नतीजतन, परिणामी JSON स्ट्रिंग बन जाती है:
{ 'खाता':'उपयोगकर्ता