خانه مقالات متن مقاله
آیدین فتحی

1616907689550

1616907689550
آشنایی با حمله SQL injection ؟

حمله SQL injection چیست

این حمله در اصل یکی از تکنیک‌های code injection است که هکرها برای وارد کردن دستورات SQL مورد نظرشان (که مطمئناً بدخواهانه است) به یک فیلد ورودی از آن استفاده می‌کنند تا اصطلاحاً کوئیری مورد نظر خودشان را اجرا کنند. امکان انجام این حمله به واسطه‌ی کد نویسی نامناسب و آسیب پذیری‌های اپلیکیشن‌های تحت وب به وجود می‌آید. درواقع برنامه نویسی نامناسب این امکان را فراهم می‌کند که هکر بتواند از طریق فیلد ورودی، یک کوئیری را به پایگاه داده ارسال کند.

خطرات حمله SQL injection

هکرها دائماً وب سایت‌های موجود در سطح اینترنت را بررسی می‌کنند تا اینکه وب سایت‌های آسیب پذیر نسبت به حمله SQL injection را بیایند. درواقع هکرها از ابزارهایی استفاده می‌کنند که به صورت اتوماتیک آسیب پذیری SQLi در وب سایت‌ها را یافته و تلاش می‌کنند تا به استفاده از این ترفند، در وهله‌ی اول و در پیش پا افتاده‌ترین حالت ممکن، سود مالی دریافت کنند.

یک حمله‌ی SQL injection موفق می‌تواند امکان دسترسی غیرمجاز به داده‌های حساس مانند رمزهای عبور و... را برای هکر فراهم کند. جالب است اشاره کنیم که بسیاری از موارد نشت اطلاعات در سال‌های اخیر به واسطه‌ی تزریق اس‌ کیو ‌ال صورت گرفته است. از جمله مشکلاتی که حمله SQLi به وجود می‌آورد می‌توانیم به موارد زیر اشاره کنیم:

    سرقت، تغییر و دستکاری، تخریب و از بین بردن داده‌های حساس (برای مثال اطلاعات شخصی کاربران، یوزر نیم و پسورد)
    تغییر امتیازات دسترسی در سطوح مختلف اپلیکیشن، پایگاه داده و حتی سیستم عامل
    و...

مثالی از حمله SQL injection

تا به اینجا با مفهوم تزریق اس کیو ال و خطراتی که دارد آشنا شدیم اما در ادامه می‌خواهیم به یک نمونه‌ی ساده‌ی این نوع حمله اشاره کنیم.

به دو خط کد زیر نگاه کنید که یک فیلد UserId دارد که شماره شناسایی کاربر را دریافت می‌کند و در خط بعدی تمامی اطلاعات کاربری با آن شماره (UserId) را به نمایش درمی‌آورد.

UserId = getRequestString("UId");
SQLQuerry = "SELECT * FROM Users WHERE UId = " + UserId;



یک کاربر معمولی شماره کاربری خود، مثلا 105 را وارد می‌کند. اما یک هکر را در نظر بگیرید که زیر و بم هک را می‌داند و به دنبال راهی برای نفوذ به سیستم است و حالا راه را برای بدست آوردن اطلاعاتش پیدا کرده است. پس هکر با وارد کردن یک ورودی هوشمندانه، کارش را انجام می‌دهد. پس به جای 105، عبارت 105 OR 1=1 را وارد می‌کند. پس مقدار عبارت SQLQuerry حالا به صورت زیر درمی‌آید:

 

SELECT * FROM Users WHERE UserId = 105 OR 1=1;


از آنجایی که 1=1 همواره مقدار True دارد، پس این کوئیری تمامی مقادیر و تمامی سطرها و ستون‌های جدول Users را در اختیار هکر قرار می‌دهد. این جدول می‌تواند شامل اطلاعات مهم و حساس کاربران از جمله رمزعبور آن‌ها باشد! حالا سادگی حمله‌ی SQL injection و اهمیت جلوگیری از آن را متوجه شدید؟ البته این مثال تنها یک حمله‌ی ساده‌ی تزریق اس کیو ال بود.