SQL इंजेक्शन एक वेब हैकिंग तकनीक है। यह कोड इंजेक्शन तकनीक है जो आपके डेटाबेस में दुर्भावनापूर्ण कोड डालती है और डेटाबेस को नष्ट कर देती है। यह वेब पेज इनपुट के माध्यम से दुर्भावनापूर्ण कोड का सम्मिलन है।
SQL इंजेक्शन का मुख्य कारण SQL क्वेरी में डेटा को चतुराई से प्रदान करना है जो हमारे डेटाबेस के अंदर डेटा में हेरफेर करता है।
मान लीजिए हमारे पास छात्रों के डेटा वाली एक टेबल है। प्रत्येक छात्र अपने छात्र आईडी का उपयोग करके अपना डेटा देख सकता है। SQL क्वेरी इस तरह डिज़ाइन की गई है कि यह छात्र से छात्र आईडी इनपुट लेती है।
अब, छात्र अपनी छात्र आईडी को "12345 or 1=1" के रूप में दर्ज कर सकता है। यह निम्नलिखित क्वेरी में अनुवादित होता है:
SELECT * FROM Students WHERE id = 12345 or 1=1
अब, उपरोक्त क्वेरी अन्य छात्रों के रिकॉर्ड भी लौटाएगी क्योंकि 1=1 हमेशा सत्य होता है। इसलिए, अन्य छात्रों का डेटा सुरक्षित नहीं है और हैकर्स द्वारा दुरुपयोग के लिए प्रवण है।
MySQL कनेक्टर मॉड्यूल में SQL इंजेक्शन को रोकने के लिए क्वेरी मानों को एस्केप करने की विधि है। क्वेरी मानों को प्लेसहोल्डर %s का उपयोग करके एस्केप किया जा सकता है।
उदाहरण
मान लीजिए, हमारे पास MyTable नाम की एक टेबल है:
+----------+---------+-----------+------------+ | Name | Class | City | Marks | +----------+---------+-----------+------------+ | Karan | 4 | Amritsar | 95 | | Sahil | 6 | Amritsar | 93 | | Kriti | 3 | Batala | 88 | | Khushi | 9 | Delhi | 90 | | Kirat | 5 | Delhi | 85 | +----------+---------+-----------+------------+
import mysql.connector
db = mysql.connector.connect(
host="your_host",
user="your_username",
password="your_password",
database="database_name"
)
cursor = db.cursor()
query = "SELECT * FROM Students WHERE Name = %s"
name = ("Karan",)
cursor.execute(query, name)
for row in cursor:
print(row)
उपरोक्त कोड क्वेरी मानों को एस्केप करने के लिए प्लेसहोल्डर के उपयोग को दर्शाता है।
आउटपुट
('Karan', 4, 'Amritsar', 95)