تزریق اسکیوال(SQLi)
آسیبپذیری که به مهاجمان اجازه میدهد دستورات SQL مخرب را به دیتابیس ارسال کنند و دادهها را دستکاری یا سرقت کنند.
تزریق SQL چیه؟
خلاصه در یه جمله: وقتی هکر بتونه کد SQL خودش رو به دیتابیس تو بفرسته و دادهها رو بخونه، تغییر بده، یا حذف کنه!
فرض کن یه فرم لاگین داری. کاربر یوزرنیم و پسورد رو میزنه، تو میفرستی به دیتابیس که چک کنه درسته یا نه. هکر به جای پسورد یه کد SQL میفرسته که میگه "همیشه درست در نظر بگیر!" و بدون پسورد وارد میشه!
مثال SQL Injection:
کوئری عادی:
1SELECT * FROM users WHERE username = 'ali' AND password = '123456'
هکر به جای پسورد میزنه: ' OR '1'='1
کوئری میشه:
1SELECT * FROM users WHERE username = 'ali' AND password = '' OR '1'='1'
چون '1'='1' همیشه درسته، شرط درست میشه و هکر وارد میشه!
انواع SQL Injection:
In-band: دادهها رو مستقیم میبینه (مثل Error-based، Union-based)
Blind: دادهها رو نمیبینه، ولی از روی رفتار سیستم حدس میزنه (True/False، Time-based)
Out-of-band: دادهها رو از طریق یه کانال دیگه میگیره (مثل DNS)
چرا برای امنیت مهمه؟
چون SQL Injection میتونه منجر به دزدی تمام دادههای دیتابیس، تغییر دادهها، حذف دادهها، یا حتی دسترسی به سرور بشه (اگه تنظیمات اجازه بده).