در این مقاله به این سوال می پردازیم که حمله SQL injection چیست و همچنین درباره تاثیر این حمله، انواع و روش های مقابله با SQL injection صحبت میکنیم.
تزریق به پایگاه داده یا SQL injection یکی از مباحث مهمی است که برنامه نویسان و توسعه دهندگان وب سایت به منظور امنیت بیشتر و جلوگیری از خطرات احتمالی می بایست به خوبی با آن آشنا باشند. SQL injection در حقیقت یکی از انواع حملات به صفحات وب سایت است که هکرها از طریق آن می توانند به اطلاعات ارزشمند و مهم وب سایت شما یعنی بانک اطلاعاتی دست یابند.
حمله بروت فورس چیست؟ راه های پیشگیری از حملات بروت فورس برای حرفه ای ها!
حمله injection چیست؟
قبل از اینکه بگوییم حمله SQL injection چیست، باید بدانیم که حملات injection چیست. حملات injection یا تزریق کد مانند تزریق SQL، OS و LDAP زمانی اتفاق می افتد که داده های بی اعتبار به عنوان دستور یا کوئری به یک مفسر فرستاده می شود. داده مخرب مهاجم می تواند مفسر را به اجرای دستورات ناخواسته مجبور کند و یا اینکه به مهاجمین اجازه دهد که به داده هایی بدون انجام احراز هویت دسترسی یابند.
حملات injection قدیمیترین و خطرناکترین حمله به برنامههای وب است که منجر به دزدی اطلاعات، گم شدن اطلاعات، و از دست رفتن یکپارچگی اطلاعات میشود. بیشتر آسیبهای این نوع حملات، تایید اعتبار ورودی نامناسب کاربر است.
برخی از انواع حملات injection عبارتند از:
Code injection
CRLF injection
Cross-site Scripting (XSS)
Email Header Injection
Host Header Injection
LDAP Injection
OS Command Injection
XPath injection
SQL Injection (SQLi)
حمله SQL injection چیست؟
حمله SQL Injection یکی از انواع حملات به صفحات وب سایت است که هکرها از این روش میتوانند به بانک اطلاعاتی سایت شما دست یابند. به این وسیله دستور های مخرب به پایگاه داده تزریق کرده و باعث بروز نقص های امنیتی شدید میشوند. با اجرای موفقیت آمیز دستورات مخرب , اطلاعات و داده های مهم سایت افشا خواهند شد. یک مهاجم می تواند با حمله تزریق SQL، سرور اصلی یا سایر زیرساخت های back-end را به خطر بیاندازد یا یک حمله denial-of-service را انجام دهد.
تأثیر حمله SQL Injection بر سایت چیست؟
یک حمله موفقیت آمیز تزریق کد SQL می تواند منجر به دسترسی غیر مجاز به داده های حساس مانند گذرواژه ها، اطلاعات کارت اعتباری یا اطلاعات شخصی کاربر شود.
در سال های اخیر بسیاری از موارد نقض داده های مشهور نتیجه حملات SQL Injection بوده و منجر به صدمه به اعتبار و جریمه های نظارتی شده است.
در برخی موارد، یک هکر می تواند با ایجاد یک درپشتی یا Backdoor برای مدت طولانی بدون اینکه شناسایی شود، اقدام به دسترسی و استخراج اطلاعات دیتابیس یک سایت یا سازمان کند.
شناسایی حملات SQL در وردپرس
راه های متعددی برای شناسایی این نوع حملات در سایت های وردپرسی وجود دارد. یکی از این راه ها بررسی فایل error_log موجود در فایل روت سایتتان که معمولا با public_html شناخته میشود است.
در این روش هکرها با استفاده از فرم تماس , فرم ارسال نظر , صفحه ورودی , بخش جستجو , صفحه پرداخت و …. اقدام به ارسال کد های مخرب میکند. در نتیجه کدها پس از ارسال توسط هکر به عنوان یک دستور در سایت اجرا میشوند.
پس از اجرای دستورات مخرب , هکر میتواند به اطلاعات مهمی از جمله نام های کاربری , رمز های عبور , شماره حساب های وارد شده در سایت و … دست یابد.
انواع حمله SQL Injection چیست ؟
سه روش برای نفوذ از طریق sql injection وجود دارد :
Union یا اجتماع :
این حمله ساده ترین و معمول ترین روش در حملات تزریق به پایگاه داده است که در تمام پایگاه داده ها قابل اجرا می باشد. البته این روش با استفاده از یک فایروال خوب و قوی قابل ردیابی و جلوگیری است.
Blind sql injection :
یکی از حملات زمانبر هکری است ولی برای هکرها بهترین نتیجه را در پی خواهد داشت. این روش با فایروال هم قابل جلوگیری نیست و همچنین بر روی تمام دیتابیس ها قابل پیاده سازی است. در این روش تمام کارها با true و false انجام شده و کاراکتر به کاراکتر دیتاها را بدست می آوریم .
Error :
در این روش هکر دستوراتی را اجرا می کند تا پایگاه داده یکسری ارور نمایش بدهد تا از همین ارورها بتواند اطلاعاتی را بدست آورد. با بستن نمایش ارور توسط وب سرور میتوان از این نوع حمله جلوگیری کرد.
راه های جلوگیری از حمله SQL Injection چیست؟
برای جلوگیری از حمله sql injection و مقابله با باگ موارد زیر را در نظر بگیرید:
- اعتبارسنجی ورودی، افزایش امنیت فرمها برای جلوگیری از ورود کوئری غیرمجاز و بررسی دایمی اطلاعات ورودی قبل از ارسال آنها به دیتابیس به عنوان Query مثلا اینکه کاراکترهای غیرمجاز نداشته باشد یا ورودی مستقیم نگیرد.
- ایجاد چند کاربر با دسترسی های مختلف به دیتابیس
- توجه کنید پیغامهای خطایی که به کاربر نمایش داده میشود. مثلا “نام کاربری نمیتواند شامل اعداد باشد” هکر را آگاه میکنید که نباید در نام کاربری اعداد وارد کند. طوری این پیغامها را طراحی کنید که نقاط ضعف سایت برای هکر نمایان نشود.
- آپدیت محتوای سایت به جدیدترین نسخه
- بررسی منظم دسترسی کاربران به دیتابیس. این کار باعث میشود اگر کاربری هک شده باشد، متوجه شوید و دسترسی آن را قطع کنید.
- افزایش امنیت سایت و هاست و دیتابیس آن
- استفاده از پسوردهای قوی و پیچیده برای دیتابیس