آسیبپذیری SQLi یک نقص امنیتی در لایه دیتابیس است که ناشی از عدم اعتبارسنجی صحیح ورودیهای کاربر در سمت بکاِند میباشد. این نقص به مهاجم اجازه میدهد دستورات مخرب SQL را تزریق کرده و به موارد زیر دسترسی پیدا کند:
استخراج اطلاعات حساس (نام کاربری، رمز عبور، دادههای مشتریان).
تغییر، حذف یا ایجاد دادههای مخرب در پایگاه داده.
در موارد پیشرفته، دسترسی کامل به سرور.
طبقهبندی بر اساس خروجی (Result Types)
حملات SQLi بر اساس نحوهی پاسخدهی سیستم به سه دسته اصلی تقسیم میشوند:
Direct Result: دادههای استخراج شده مستقیماً در پاسخ (Response) مشاهده میشوند.
Indirect Result: دادهها توسط برنامه پردازش شده و نتیجهی نهایی (بدون خودِ داده) به کاربر برمیگردد.
No Result (Blind): هیچ دادهای در خروجی نمایش داده نمیشود و مهاجم باید از روشهای زمانبندی (Time-based) یا منطقی استفاده کند.
نقاط آسیبپذیر (Attack Vectors)
این آسیبپذیری میتواند در تمامی نقاط ورودی کاربر از جمله فیلدهای فرم، کوکیها (Cookies)، هدرهای HTTP (مانند User-Agent) و پارامترهای URL رخ دهد.
چالشهای دفاعی و دور زدن WAF
اگرچه استفاده از WAF (Web Application Firewall) یک لایه دفاعی است، اما مهاجمان با استفاده از تکنیکهای زیر سعی در دور زدن قوانین (Rules) دارند:
Encoding & Obfuscation: (مانند URL Encoding یا Base64) برای پنهان کردن دستورات.
Parameter Pollution: ایجاد تداخل در پارامترها.
Evasion Techniques: استفاده از ترفندهای Unicode، تغییر Case حروف، یا دستکاری متدهای HTTP.