آموزش طراحی وب

حملات SQL Injection چیست؟

در این جلسه شما با حملات SQL Injection آشنا می شوید ، همچنین میاموزید که چگونه جلوی این حملات را بگیرید.

SQL Injection

فصل دوم  (حملات  SQL Injection)

جلسه اول (حملات  SQL Injection چیست؟ )

در این جلسه راجع به حملات  SQL Injection صحبت می کنیم . فرض کنید شما یک صفحه ورود به پنل مدیریت طراحی کردید و میخواین با گرفتن نام کاربری و رمز عبور به کاربر اجازه ورود بدید ، در این صورت شما با دستور زیر نام کاربری و رمز عبور وارد شده رو با نام کاربری و رمز عبور موجود در دیتابیس مقایسه می کنید و در صورتی که درست وارد شده باشه ، میتونه وارد پنل مدیریت بشه :

 ظاهرا همه چیز درست جلو میره و شما یک کد استاندارد نوشتید . حالا فرض کنید یک هکر چنین چیزی رو بجای پسورد وارد کنه :

 دستور SQL شما به شکل زیر درمیاد :

 این یعنی در صورتی رکورد به من برگردون که نام کاربری برابر با $username باشه و رمز عبور خالی باشه و یا ۱ برابر با ۱ باشه . خوب همیشه ۱ برابر ۱ هست و این محاسبه منطقی هست ، پس دستور if شما به شما True برمیگردونه . زمانی که هکر با وارد کردن یک عبارت ساده بتونه دستور SQL شمارو تغییر بده ، به راحتی میتونه وارد پنل مدیریت بشه . درسته؟

حالا به یک مثال دیگه دقت کنید :

شما یک جستجو بر اساس تاریخ برای اخبار سایتتون نوشتید و فرض کنید که تاریخ رو با $_GET میگیرید :

دستور SQL شما به شکل زیره :

 اگر مقدار $_GET شما برابر باشه با ۱۳۵۰۰۲۶۵ دستور شما به شکل زیره :

 ظاهرا همه چیز درست عمل میکنه ، حالا کاربر مقدار تاریخی که تو URL قرار داره به شکل زیر تغییر میده :

 حالا نتیجه ی کار حذف کامل جدول اخباره . به همین راحتی 😐

حالا باید چیکار کنیم؟

نگران نباشید ؛ شما میتونید با استفاده از تابع mysql_escape_string() به راحتی جلوی این حملات رو بگیرید . به مثال زیر دقت کنید :

برای مثال اول ، که یک صفحه ورود طراحی کرده بودید میتونید بصورت زیر عمل کنید :

 برای مثال دوم ، که جستجو در اخبار طراحی کرده بودید ، بصورت زیر عمل می کنید :

 پس از اینکه مقادیر رو داخل متغییرها قرار دادید ، میتونید بجای اینکه مستقیم مقادیر ورودی و دریافت کنید و به دیتابیس بفرستید ، اول اونارو فیلتر کنید و بعد به دیتابیس انتقال بدید . راه های زیادی برای اینکار وجود داره ، میتونید فصل اول رو مطالعه کنید تا با راه های فیلتر کردن ورودی آشنا شوید .

در جلسات آینده ترفندهای حملات SQL injection و راه های مقابله با اون هارو بررسی می کنیم . با ما همراه باشید .

تهیه شده در مدرسه مجازی ایرانیان

حسین همت یار

نویسنده در مدرسه مجازی ایرانیان ، دانشجوی رشته IT ، طراح وب و علاقه مند به تازه های دنیای اینترنت و وب و البته لینوکس

دیدگاه ۴

آیا سوالی دارید؟

پنل کاربران

بستن
*
*

نظرسنجی

به کدام دسته موضوعی علاقه مند هستید؟

آخرین پرسش و پاسخ ها

اموزش تصادفی

خبرهای باحال دریافت کن

خبرهای باحال دریافت کن

ما هم مثل شما از دریافت ایمیل های مزاحم خوشمون نمیاد. فقط مطالب جدید و خبرهای ویژه رو به اطلاع شما میرسونیم. قول میدیم اسپم نکنیم :)

ثبت نام انجام شد ، لطفا ایمیلی که براتون ارسال میشه رو تایید کنین