حملات SQL injection چیست؟
یکی از رایج ترین روش های نفوذ به پایگاه داده است که معمولا از طریق صفحات وب اتفاق می افتد. این تکنیک دست نفوذ گران را برای انجام هر کاری باز نمی کند و بیشتر در به کار انداختن یا حذف کردن پایگاه داده کاربرد دارد.
کارکرد SQL injection چگونه است؟
در این روش پر تکرار هکر مانند سایر کاربران وارد پلتفرم می شود، او از طریق فیلد های ورود داده مانند کادر جست و جو کد مخربی را وارد پایگاه داده می کند.
اگر دیتا بیس شما SQL باشد کد های وارد شده مخرب می توانند وارد پایگاه داده شوند و DBMS آنها را به عنوان کد دستوری تشخیص می دهد نه به عنوان مقادیر ورودی. به عنوان مثال شما عبارت “لیوان” را جست و جو می کردید پایگاه داده می رفت و نتایج مربوط به آنرا نمایش می داد. حالا شما اگر دستور همه اطلاعات را پاک کن را به زبان SQL بنویسید دیگر نتایج خاصی را جست وجو نمی کند بلکه همه داده هارا حدف میکند!
انواع حملات SQL injection
SQL injection در باند
هکر از کانال ارتباطی که کشف کرده برای جمع آوری اطلاعات استفاده میکند، که دو نوع دارد.
Error-based SQL injection:
در این حمله پایگاه داده پیغام خطا تولید میکند و این پیغامها اطلاعات مورد نیاز درمورد ساختار نوع و نسخه پایگاه داده را جمعآوری میکند.
Union-based SQL injection:
در این روش با استفاده از اپراتور UNION SQL چندین دستور انتخابی (select) که پایگاه داده تولید کرده ترکیب میشوند تا یک پاسخ HTTP بهدست آید. این پاسخ احتمالا حاوی دادههای موردنظر مهاجم است.
SQL injection استنتاجی
در این حمله داده ای از دیتابیس به مهاجم منتقل نمی شود، بلکه مهاجم با ارسال دستورات خود و دیدن تغییر رفتار سرور یا کاهش سرعت آن بیشتر متوجه نوع و کارکرد درخواست ارسالی خود و کارکرد پایگاه داده بشود. این نوع حمله هم خود دو نوع است.
حملات Boolean:
در این نوع حملات هکر چند کوئری SQL به سرور ارسال می کند. نتیجه آن بستگی به درست بود یا نبودن پاسخ HTTP سرور تغییر می کند. در نهایت مهاجم میتواند ببیند که آیا پیام ارسالی نتیجه درست یا نادرستی ایجاد کرده است.
حملات Time-based:
در این حملات مهاجم یک کوئری به دیتابیس میفرستد تا آن را برای چند ثانیه در حالت انتظار نگه دارد. سپس با توجه به زمان پاسخ دیتابیس، درست یا نادرست بودن کوئری را نتیجه میگیرد.
SQL injection خارج از باند
اکثر هکرها دنبال نمونههای SQL injection آسیبپذیریهای blind یا کور هستند. یعنی اپلیکیشن نتایج پرسوجوهای SQL یا هر داده مربوط به خطای پایگاه داده را در داخل پاسخها برنمیگرداند بلکه آن میتواند باعث سوءاستفاده از اطلاعات پایگاه داده شود اما برای پیاده سازی آن نیاز به اجرای تکنیک های پیچیده و دشواری است.
چگونه می توان از حملات SQL injection جلوگیری کرد؟
اعمال محدودیت برای ورود داده به کاربران
کابران اگر کلمات کلیدی sql را وارد کردند سرور آنها را به مرحله اجرا نرساند و به کاربر نتیجه از پیش تعیین شده نشان دهد، مثلا برای جست و جوی شما نتیجه ای یافت نشد.
همچنیت برخی کاراکتر های خاص که شامل ” # – & * و… می شوند را در صورت دریافت از کاربر در SQL خود اجرا نکنید.
از SQL پویا تا حد ممکن استفاده نکنید
به جای آن که داده های کاربر را مستقیما وارد کد SQL خود کنید. آنها را به صورت پارامتر دریافت کنید و از SQL های آماده و از پیش تعریف شده برای اجرای درخواست استفاده کنید، مثلا کاربر نوع زنانه یا مردانه بودن کالای خود را مستقیما جست و جو نکند؛ بلکه آنرا به عنوان فیلتر کالا ها تعیین کند.
داده های حساس را رمز نگاری کنید
همه اطلاعات مهم شما از طریق این حملات اگر دزدیده شوند در صورت رمز نگاری بودن استفاده از آنها توسط مهاجم غیر ممکن است. تفاوتی هم ندارد که رمزنگاری دو طرفه باشد یا یک طرفه.
عدم نمایش مستقیم خطا های پایگاه داده
همان طور که اشاره شد با استفاده از خطاهای دیتابیس می توانند اطلاعات کاملی در رابطه با آن به دست آورند. شما می توانید متن خطا ها را تغییر دهید که با استفاده از آنها چیزی درباره دیتابیس شما لو نرود. یا با استفاده از FireWall از عبور داده های حاوی خطا جلو گیری کنید.
استفاده از به روز ترین نسخه پایگاه داده
قطعا اگر از نسخه جدیدتر پایگاه داده خود استفاده کنید کارایی و امنیت بیشتری دریافت خواهید کرد.
پایگاه داده را خودتان تست کنید
با استفاده از نرم افزار هایی مانند web vulnerability scanner نقاط ضعف پایگاه داده خود را تست کنید تا آنها را رفع کنید.
کد هایی که فکر می کنید میتوانند مخرب باشند را خودتان اجرا کنید تا از آنها مطمئن شوید.
موارد اخیر
-
حمله Shoulder Surfing چیست؟ چرا باید حملات نگاه از روی شانه را جدی بگیریم؟
-
حمله گودال آب چیست؟ برسی حملات Watering Hole
-
برسی دام عاطفی هکر ها!حملات Honey Trap هانی ترپ
-
Dumpster Diving چیست؟ زباله گردی هکر ها برای حمله به امنیت شما!
-
حمله Quid Pro Quo چیست؟ روشهای مقابله با این تهدید سایبری
-
حمله Piggybacking چیست؟ روشها،انواع و راهکارهای جلوگیری از این تهدید امنیت سایبری
-
حمله Pretexting چیست؟ چگونه فریب حملات پریتکستینگ را نخوریم؟
-
حمله Baiting چیست؟ چگونه از حملات بیتینگ جلوگیری کنیم؟
-
فناوری Anycast چیست و چگونه کار میکند؟ مسیریابی پیشرفته در شبکه
-
برسی کاربردها و تفاوت های Unicast، Multicast و Broadcast در شبکه
برترین ها
اشتراک گذاری این مطلب
دیدگاهتان را بنویسید
نشانی ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *