एसक्यूएल इंजेक्शन क्या है?

click fraud protection

वेब भेद्यता के सबसे बड़े वर्गों में से एक को "एसक्यूएल इंजेक्शन" या एसक्यूएलआई के रूप में जाना जाता है। संरचित क्वेरी भाषा, उर्फ ​​​​एसक्यूएल, है अधिकांश डेटाबेस के साथ बातचीत करने के लिए इस्तेमाल की जाने वाली भाषा, हालांकि डेटाबेस के आधार पर भाषा के कई रूपों का उपयोग किया जाता है मंच। कोई भी वेबसाइट जो उपयोगकर्ता डेटा संग्रहीत करती है, जैसे खाता जानकारी, या उपयोगकर्ता अपलोड कार्यक्षमता प्रदान करती है, जैसे कि एक छवि होस्टिंग वेबसाइट उस डेटा को संग्रहीत करने के लिए डेटाबेस का उपयोग करेगी।

टिप: SQL को आम तौर पर या तो "एस्स क्यू एल" या "सीक्वल" कहा जाता है, पहला विकल्प ब्रिटिश अंग्रेजी में अधिक सामान्य है और दूसरा अमेरिकी अंग्रेजी में अधिक प्रचलित है। दोनों उच्चारणों को आम तौर पर डेटाबेस के बारे में बात करने के संदर्भ में समझा जाता है।

SQLi क्या है?

SQLi एक भेद्यता है जहां वेब डेवलपर्स जो कोड को डिज़ाइन करते हैं जो के बीच संचार करता है वेबसर्वर और डेटाबेस a. द्वारा सबमिट किए जा रहे SQL कमांड के विरुद्ध सुरक्षा लागू नहीं करते हैं उपयोगकर्ता। समस्या यह है कि डेटाबेस स्टेटमेंट से बाहर निकलने और नए तर्क या पूरी तरह से नया स्टेटमेंट जोड़ने में सक्षम होना संभव है। परिवर्तित या दूसरा डेटाबेस स्टेटमेंट संभावित रूप से बड़े पैमाने पर विलोपन या डेटा लीक सहित कई प्रकार की कार्रवाइयां कर सकता है।

शोषण आम तौर पर मौजूदा बयानों को सभी परिस्थितियों में सही बनाने या दूसरा बैच कमांड प्रदान करने के लिए घूमता है जो सभी डेटा को हटाने या प्रदर्शित करने जैसी विशिष्ट कार्रवाई करता है। उदाहरण के लिए, किसी वेबसाइट पर लॉग इन करने के लिए एक SQL कथन यह जांच सकता है कि सबमिट किया गया उपयोगकर्ता नाम और पासवर्ड डेटाबेस में किसी प्रविष्टि से मेल खाता है या नहीं। SQL इंजेक्शन का उपयोग करने का प्रयास करने के लिए "या 1 = 1" जैसे "या सत्य" खंड जोड़ने का प्रयास कर सकते हैं। यह "लॉगिन [इस] उपयोगकर्ता नाम के साथ कमांड बना देगा, यदि पासवर्ड [यह] है, या यह कथन सत्य है"।

SQLi को कैसे रोकें?

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

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