SQL injection که به آن SQLI یا تزریق به پایگاه داده نیز گفته میشود، یک حمله متداول است که از کدهای مخرب SQL برای دستکاری پایگاه داده جهت دسترسی به اطلاعاتی که هرگز به نمایش در نمیآیند، استفاده میکند. این دادهها ممکن است شامل اطلاعات مهم شرکت و یا اطلاعات دقیق در مورد مشتریها باشد.
SQL injection میتواند تاثیرات زیادی بر روی کسبوکارها بگذارد. به طور کلی میتوان گفت یک حمله موفقیت آمیز ممکن است منجر به مشاهده غیرمجاز لیستی از کاربران، حذف کل چارچوبها شود و در موارد خاصی مهاجم میتواند تمامی دسترسیهای مدیر را به پایگاه دادهها پیدا کند که این امر منجر به خسارتهای غیر قابل جبرانی میگردد.
در محاسبه خسارتهای ناشی از SQL injection حتما باید از بین رفتن اعتماد مشتری را نیز در نظر گرفت، زیرا اطلاعات شخصی آنها مانند شماره تلفن، آدرسها و اطلاعات کارتهای اعتباری آنها به سرقت برده میشود.
قابل ذکر است با استفاده از این بردار به تمامی پایگاههای داده SQL میتوان حمله کرد، اما وبسایتها بیشتر از همه مورد هدف قرار میگیرند.
SQL queries
SQL یک زبان استاندارد است که جهت دستیابی و دستکاری پایگاه دادهها به منظور نمایش دادهها به صورت سفارشی شده برای هر کاربر مورد استفاده قرار میگیرد. از SQL queryها جهت اجرای commandهایی مانند بازیابی دادهها، بروزرسانی و حذف رکوردها استفاده میشود.
عناصر مختلف SQL، مسئولیت یک سری عملیات را بر عهده دارند مانند بازیابی دادهها، براساس پارامترهای ارائه شده توسط کاربر با استفاده از دستور select.
پیشگیری و کاهش SQL injection
روشهای موثر زیادی جهت جلوگیری از حملات SQL و همچنین ایجاد امنیت در مقابل آنها وجود دارد.
اولین روش، اعتبارسنجی ورودیها میباشد که در واقع به صورت نوشتن کدی است که میتواند منجر به شناسایی ورودیهای غیر مجاز شود.
با این که روش اعتبارسنجی به عنوان بهترین روش در نظر گرفته میشود، اما با این حال میتوان گفت به ندرت یک روش بیخطر است. واقعیت این است که در اکثر مواقع ترسیم تمامی ورودیهای مجاز و غیر مجاز مقدور نیست؛ یا این که بهتر است گفته شود بدون ایجاد تعدادی مثبت کاذب که با عملکردهای یک برنامه تداخل ایجاد مینماید، غیر ممکن است.
به همین دلیل است که معمولا فایروال برنامههای تحت وب (WAF) به منظور فیلتر کردن SQL و همچنین سایر تهدیدات آنلاین مورد استفاده قرار میگیرد. برای ایجاد چنین امنیتی، به طور معمول، عملکرد WAF مبتنی بر لیستی بزرگ و بروز از امضاهای بسیار دقیق میباشد بتواند درخواستهای مخرب SQL را از بین ببرد.
فایروالهای جدید برنامههای تحت وب، اغلب با سایر راهحلهای امنیتی ادغام میشوند. از این طریق، یک WAF میتواند اطلاعات بیشتری را دریافت نموده تا بتواند امنیت بالاتری را نیز برقرار نماید.
به عنوان مثال، یک فایروال برنامه تحت وب (WAF) که با یک ورودی مشکوک ولی نه لزوما مخرب روبرو میشود، قبل از تصمیمگیری برای مسدود کردن آن درخواست، آن را با دادههای مربوط به IP بررسی مینماید. در صورتی که آی پی مورد نظر سابقه خوبی نداشته باشد، توسط WAF مسدود میشود.
فایروال برنامههای تحت وب WAF فورتی نت، از signature recognition، IP reputation و سایر روشهای امنیتی جهت شناسایی و مسدود نمودن SQL injection با کمترین میزان مثبت کاذب استفاده میکند.