SQL ইনজেকশন (SQL Injection) একটি ওয়েব হ্যাকিং টেকনিক যেখানে ক্ষতিকর কোড ইনপুট দিয়ে ডেটাবেসে ম্যালিশিয়াস কোড ঢোকানো হয় এবং ডেটাবেস নষ্ট করা হয়।
মূল কারণ: ব্যবহারকারীর ইনপুট সরাসরি SQL কোয়েরিতে ব্যবহার করা হলে সেটি কোয়েরিকে ম্যানিপুলেট করতে পারে।
উদাহরণ: ছাত্র আপনার ID দিয়ে নিজের ডেটা দেখে। যদি সে ইনপুট দেয় "12345 or 1=1", তবে কোয়েরি হয়:
SELECT * FROM Students WHERE id = 12345 or 1=1
1=1 সবসময় সত্য, তাই অন্যের ডেটাও দেখাবে।
MySQL কনেক্টর মডিউলে প্লেসহোল্ডার (%s) ব্যবহার করে কোয়েরি ভ্যালু এস্কেপ করা যায় এবং SQL ইনজেকশন রোধ করা যায়।
উদাহরণ
Students টেবিল থেকে নিরাপদে ডেটা কোয়েরি:
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)
এখানে %s প্লেসহোল্ডার ব্যবহার করা হয়েছে, যা ইনপুটকে নিরাপদে এস্কেপ করে।
আউটপুট
('Karan', 4, 'Amritsar', 95)