آموزش ها-هاست نگار

SQL Injection چیست؟

اگر اهل مباحث امنیت وب یا برنامه نویسی تحت وب باشید، حتما با نام‌های SQL و SQL Injection آشنا هستید. در این مقاله، ما توضیح می‌دهیم که SQL injection چیست، نحوه یافتن و جلوگیری از انواع آسیب‌پذیری‌های SQL injection را توضیح می‌دهیم.
 
SQL injection که به آن SQLI یا تزریق به پایگاه داده نیز گفته می شود، نوعی از حملات است که در آن هکر با استفاده از مشکلات امنیتی در کدهای نوشته شده توسط برنامه نویس سایت ، اقدام به اجرای دستورات خود بر روی دیتابیس سایت هدف میکند یا به اصطلاح آنها را اکسپلویت میکند. در این حمله ، هکر کد مورد نظر خود را به کدهای اس کیو ال اضافه میکند.
 
در بسیاری از موارد، یک مهاجم می‌تواند این داده‌ها (ازجمله رمزهای عبور، اطلاعات فردی کاربران و ...) را تغییر داده یا حذف کند و باعث تغییرات مداوم در محتوا یا رفتار برنامه شود.در برخی شرایط، مهاجم می‌تواند یک حمله تزریق SQL را تشدید کند تا سرور زیربنایی یا دیگر زیرساخت‌های بک‌اند را به خطر بیاندازد یا یک حمله DOS را انجام دهد.
بیشتر بدانید: حمله DOS چیست؟
تاثیر موفقیت آمیز حمله SQL injection چیست؟
یک حمله موفقیت آمیز SQL injection می تواند منجر به دسترسی غیرمجاز به داده های حساس مانند رمز عبور، شماره تلفن، آدرس ها، جزئیات کارت اعتباری یا اطلاعات شخصی کاربر شود. بسیاری از لو رفتن داده‌های پرمخاطب در سال‌های اخیر نتیجه حملات SQLI بوده‌اند که منجر به آسیب به شهرت، از بین رفتن اعتماد مشتری و جریمه‌های قانونی شده است. در برخی موارد، مهاجم می‌تواند یک بک دور دائمی در سیستم‌های یک سازمان به دست آورد که منجر به مصالحه طولانی‌مدت می‌شود که می‌تواند برای مدت طولانی مورد توجه قرار نگیرد.
 
نحوه عملکرد SQL Injection
روش حمله بدین صورت است که هکر به عنوان یک بازدیدکننده سایت ، در فرمهای سایت در فیلدی که باید اطلاعات خود را وارد کند ، میتواند کوئری های مخرب خود را وارد و به دیتابیس ارسال کند.بدین صورت به جای اجرا شدن کد اصلی sql ، کد وارد شده هکر اجرا خواهد شد. پس زمانیکه این باگ در یک نرم افزار وجود داشته باشد ،  هکر خواهد توانست دستورات خود را در پایگاه داده  اجرا کند. نوع اطلاعات ورودی در SQL Injection به نوع سرویس هاستینگ و دیتابیس بستگی دارد و هر دیتابیسی به یک سری کاراکترهای خاص حساس است.
 
نمونه های SQL injection
طیف گسترده‌ای از آسیب‌پذیری‌ها، حملات و تکنیک‌های تزریق SQL وجود دارد که در موقعیت‌های مختلف ایجاد می‌شوند. برخی از نمونه های رایج تزریق SQL عبارتند از:
 
Blind SQL injection
یک Blind SQLI زمانی اتفاق میافتد که هکرها محموله های داده را به سرور پایگاه داده ارسال می کنند تا پاسخ و رفتار آن را مشاهده کنند بدون اینکه قادر به دیدن آنچه در واقع در پایگاه داده رخ می دهد. پاسخ سرور سرنخ هایی را در اختیار مهاجم قرار می دهد که می توانند از آنها برای تنظیم استراتژی حمله خود استفاده کنند.
 
 
Error
در این روش هکر دستوراتی را اجرا میکند که پایگاه داده را مجبور می کند تا پیام های خطایی تولید کند که اطلاعاتی در مورد ساختار پایگاه داده را نشان می دهد. با بستن نمایش ارور توسط وب سرور میتوان از این نوع حمله جلوگیری کرد.
 
Union Based Attack
حملات UNION از عبارات آماده شده استفاده می کنند که از تابع SQL Union سوء استفاده می کنند، که نتایج چند کوئری را در یک نتیجه ترکیب می کند.این حمله به هکر کمک می کند که داده ها را از جداول متعددی به طور همزمان استخراج کند.
 
چگونه با SQL injection مقابله کنیم؟
اگر یک حمله SQLI با موفقیت انجام شود، می‌تواند با افشای داده‌های حساس و آسیب رساندن به اعتماد مشتری، آسیب‌های گسترده‌ای ایجاد کند. به همین دلیل تشخیص به موقع این نوع حمله مهم است.
در اولین گام برای اینکه بتوانید با SQL injection مقابله داشته باشید، باید بتوانید جلوی ورود Query های غیر مجاز را بگیرید. این امر به این صورت امکان پذیر می باشد که شما در هنگام طراحی پایگاه داده وب سایت خود، کاری کنید که دستورات یا Query های غیر مجاز وارد نشود.
 
برای مثال برخی از فیلد هایی که تنها نیازمند اعداد می باشد، می تواند با اعداد کامل شود و برخی دیگر که نیازمند کلمات هستند، صرفا کلمات و نه هیچ کاراکتر دیگری را باید دریافت کنند. این کار به شما کمک می کند تا بتوانید از حملات SQL injection جلوگیری داشته باشید.
قدم بعدی شناسایی این حملات است که فایروال های برنامه های کاربردی وب (WAF) رایج ترین ابزار مورد استفاده برای فیلتر کردن حملات SQLi اشاره کرد. WAF ها بر اساس کتابخانه ای از امضاهای حمله به روز شده هستند و می توانند برای فیلتر گذاری کوئری های SQL مخرب در برنامه های وب پیکربندی شوند.
به ورودی کاربر اعتماد نکنید. هر ورودی کاربر ارائه شده در کوئری SQL، احتمال SQL injection موفق را افزایش می دهد. بهترین راه برای کاهش این نوع خطر، اعمال تدابیر امنیتی در اطراف ورودی کاربر است.
 
در این آموزش در مورد حملات SQL injection توضیح دادیم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
 

 

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

خرید هاست

 

آموزش های مرتبط