Database
 sql >> डेटाबेस >  >> RDS >> Database

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

एसक्यूएल इंजेक्शन का परिचय

  • एसक्यूएल इंजेक्शन एक भेद्यता या तकनीक है जो किसी वेबसाइट या वेब एप्लिकेशन के डेटाबेस को नष्ट कर सकती है। यह सबसे व्यापक रूप से उपयोग किए जाने वाले वेब-आधारित हमलों में से एक है।
  • एसक्यूएल इंजेक्शन का मुख्य उद्देश्य किसी वेबसाइट के डेटाबेस तक पहुंच प्राप्त करना है। इसलिए, SQL इंजेक्शन के काम करने के लिए, किसी को एक वेब एप्लिकेशन की आवश्यकता होती है जो एक डेटाबेस से जुड़ा हो।
  • चूंकि, डेटाबेस में एडमिनिस्ट्रेटर पासवर्ड सहित सभी डेटा होता है, यानी मालिक का लॉगिन पासवर्ड, वेबसाइट का हमलावर वेब फॉर्म भरकर वेबसाइट को संपादित करने के लिए एडमिन पेज तक पहुंच सकता है।
  • वेब-फ़ॉर्म में उपयोगकर्ता नाम और पासवर्ड शामिल हैं। जब उपयोगकर्ता वेब प्रपत्र के इनपुट फ़ील्ड में कुछ इनपुट करता है, तो SQL चयन क्वेरी डेटाबेस पर लागू किया गया है।
  • सिस्टम इनपुट का मिलान करने का प्रयास करता है, अर्थात उपयोगकर्ता नाम और उपयोगकर्ता द्वारा दर्ज किए गए पासवर्ड को उपयोगकर्ता नाम और पासवर्ड के साथ जो पहले से ही डेटाबेस में संग्रहीत है। यदि दोनों इनपुट का मिलान किया जाता है, तो उपयोगकर्ता को एक्सेस मिल जाता है अन्यथा उपयोगकर्ता को एक्सेस से वंचित कर दिया जाएगा।
  • कुछ ऐसी वेबसाइटें हैं जिनमें किसी अन्य इनपुट को ब्लॉक करने की व्यवस्था नहीं है। ऐसी वेबसाइटें SQL इंजेक्शन के प्रति संवेदनशील होती हैं। इस मामले में, किसी भी SQL क्वेरी को इनपुट के रूप में फीड किया जा सकता है और सिस्टम इसे निष्पादित करेगा।
  • उदाहरण के लिए, हमलावर पूरे डेटाबेस को डाउनलोड करने के लिए एक क्वेरी इनपुट कर सकता है, डेटाबेस को हटा सकता है, डेटाबेस को संशोधित कर सकता है और स्थिति को हमेशा सही बना सकता है। यदि पासवर्ड की शर्त को हमेशा सत्य बनाया जाता है, तो कोई पासवर्ड दर्ज किए जाने पर कोई फर्क नहीं पड़ता। पासवर्ड के लिए, सिस्टम उन तक पहुँचता है जो डेटाबेस में संग्रहीत हैं, लेकिन यदि डेटाबेस में पासवर्ड तालिका को छोड़ने के लिए कोई क्वेरी की जाती है, तो सिस्टम कोई भी पासवर्ड लेना शुरू कर देगा। इस तरह, हमलावर आसानी से डेटाबेस तक पहुंच प्राप्त कर सकता है। अब वह वेबसाइट में लॉग इन लोगों के सभी पासवर्ड, विभिन्न टेबल और उनकी सामग्री, वेबसाइट की आंतरिक संरचना और वेबसाइट से संबंधित किसी भी अन्य जानकारी को जान सकता है।
  • इस विधि को SQL इंजेक्शन कहा जाता है जिसमें आप डेटाबेस में हेरफेर करने और उस तक अनधिकृत पहुंच प्राप्त करने के लिए क्वेरी को इंजेक्ट करते हैं। SQL आधारित डेटाबेस के लिए यह सबसे खतरनाक प्रकार का वेबसाइट हमला है।
  • ऐसे हमलों को रोकने का एक तरीका उपयोगकर्ता नाम और पासवर्ड के अलावा अन्य अनावश्यक इनपुट को ब्लॉक करना है।
  • एसक्यूएल इंजेक्शन कमांड रन टाइम पर बनाए जाते हैं। इसलिए डायनेमिक इनपुट कमांड से बचें। वेब एप्लिकेशन फ़ायरवॉल के साथ डेटाबेस को रोकें . साथ ही, वेबसाइट से संबंधित कोई भी गोपनीय जानकारी किसी को न बताएं।
  • ऐसे SQL हमलों के कारण वेबसाइटों को भारी डेटा और वित्तीय नुकसान हो सकता है।

उदाहरण:

मान लीजिए, इसमें एक वेब एप्लिकेशन है जिसके साथ एक डेटाबेस जुड़ा हुआ है। हो सकता है कि यह वेब एप्लिकेशन उपयोगकर्ता से इनपुट ले रहा हो और डेटाबेस पर जानकारी संग्रहीत कर रहा हो या डेटाबेस से डेटा प्राप्त कर उपयोगकर्ता को प्रदर्शित कर रहा हो।

किसी भी मामले में, एक SQL क्वेरी या डेटाबेस क्वेरी होती है जो वेब एप्लिकेशन पर उत्पन्न होती है जो डेटाबेस को भेजी जाती है और इस क्वेरी को डेटाबेस पर निष्पादित किया जाता है और प्रासंगिक जानकारी वेब एप्लिकेशन को वापस कर दी जाती है। इस तरह सामान्य परिदृश्य काम करता है।

इसलिए, जब हमलावर SQL इंजेक्शन का उपयोग करता है, तो वह इस डेटाबेस क्वेरी में हेरफेर करने की कोशिश करता है ताकि वह ऐसा कुछ कर सके जो इसे आदर्श रूप से नहीं करना चाहिए। इसलिए, हमलावर SQL क्वेरी को बदलता है, उसमें हेरफेर करता है, वह SQL क्वेरी में कुछ दुर्भावनापूर्ण स्ट्रिंग को इंजेक्ट करता है और फिर इसे अनधिकृत तरीके से कुछ करता है। तो अब डेटाबेस क्वेरी को हमलावर द्वारा हेरफेर किया जाता है, फिर यह दुर्भावनापूर्ण क्वेरी डेटाबेस को भेजी जाती है, इसे वहां निष्पादित किया जाता है और संबंधित परिणाम वापस कर दिए जाते हैं।

इसे SQL इंजेक्शन के रूप में जाना जाता है। SQL इंजेक्शन एक कोड इंजेक्शन तकनीक है जिसका उपयोग दुर्भावनापूर्ण और गतिशील SQL कथनों को निष्पादित करने के लिए किया जाता है। SQL हमले कुछ ऐसे हैं जिनका उपयोग हमलावर डेटाबेस सर्वर पर नियंत्रण करने के लिए करता है।

एसक्यूएल इंजेक्शन को कैसे रोकें

  1. डायनामिक SQL का उपयोग करने से बचें

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

  • उपयोगकर्ता द्वारा प्रदान किए गए इनपुट स्वच्छ होने चाहिए

उपयोगकर्ता द्वारा प्रदान किए जाने वाले डेटा का प्रकार अपेक्षित प्रकार के साथ ठीक से मिलान और सत्यापित होना चाहिए।

  • संवेदनशील डेटा प्लेन टेक्स्ट में नहीं होना चाहिए

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

  • डेटाबेस त्रुटियों को सीधे उपयोगकर्ता को प्रदर्शित नहीं किया जाना चाहिए

हमलावर को दिखाई गई त्रुटि जानकारी से उसे डेटाबेस के बारे में जानकारी प्राप्त करने में मदद मिल सकती है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक सामग्री दस्तावेज़ को सेल्सफोर्स कस्टम ऑब्जेक्ट में संलग्न करना

  2. डेटा कैटलॉग, व्यावसायिक शब्दावलियों और डेटा शासन के माध्यम से ग्राहक व्यवसाय इंटेलिजेंस सक्षम करें

  3. विशेष द्वीप चुनौती के लिए पाठक समाधान

  4. क्या आपका Salesforce ड्राइवर बल्क कार्रवाइयों का समर्थन करता है?

  5. स्रोत नियंत्रण से डेटाबेस परिनियोजित करना