SQL इंजेक्शन एक वेब हैकिंग तकनीक है। यह कोड इंजेक्शन तकनीक है जो आपके डेटाबेस में दुर्भावनापूर्ण कोड सम्मिलित करती है और डेटाबेस को नष्ट कर देती है। यह वेब पेज इनपुट के माध्यम से दुर्भावनापूर्ण कोड का सम्मिलन है।
SQL इंजेक्शन का मुख्य कारण SQL क्वेरी में स्मार्ट तरीके से डेटा प्रदान करना है जो हमारे डेटाबेस के अंदर डेटा में हेरफेर करता है।
मान लीजिए कि हमारे पास छात्रों के डेटा के साथ एक टेबल है। प्रत्येक छात्र अपने छात्र आईडी का उपयोग करके अपना डेटा देख सकता है। SQL क्वेरी को इस तरह डिज़ाइन किया गया है कि यह छात्र से छात्र आईडी इनपुट लेती है।
अब, छात्र अपनी छात्र आईडी “12345 या 1=1” के रूप में दर्ज कर सकता है। यह निम्नलिखित क्वेरी में तब्दील हो जाता है।
चुनें * उन छात्रों से जहां id==12345 या 1=1
अब, उपरोक्त क्वेरी अन्य छात्रों के रिकॉर्ड भी लौटाएगी क्योंकि 1=1 हमेशा सत्य होता है। इसलिए, अन्य छात्रों का डेटा सुरक्षित नहीं है और हैकर्स द्वारा दुरुपयोग की संभावना है।
MySQL कनेक्टर मॉड्यूल में SQL इंजेक्शन को रोकने के लिए क्वेरी मानों से बचने की विधि है। प्लेसहोल्डर %s का उपयोग करके क्वेरी मानों से बचा जा सकता है।
मान लीजिए, हमारे पास "MyTable" नाम की एक टेबल है।
+----------+-------------+----------+---------------+ | नाम | कक्षा | शहर | मार्क्स |+----------+---------+----------+---------------+| करण | 4 | अमृतसर | 95 || साहिल | 6 | अमृतसर | 93 || कृति | 3 | बटाला | 88 || खुशी | 9 | दिल्ली | 90 || किरात | 5 | दिल्ली | 85 |+----------+------------+----------+---------------+
उदाहरण
आयात करें myresult में पंक्ति के लिए * उन छात्रों से चुनें जहां Name=%s"name=("Karan",)cursor.execute(query,name):Print(row)उपरोक्त कोड क्वेरी मानों से बचने के लिए प्लेसहोल्डर के उपयोग को दर्शाता है।
आउटपुट
('करण', 4, 'अमृतसर', 95)