دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۲
  • آبان

جلسه ۳۰ : تزریق به دیتابیس (SQL Injection) در MySQL

  • دسته‌بندی‌ها :
جلسه ۳۰ : تزریق به دیتابیس (SQL Injection) در MySQL
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

      با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، و کاربرانی که دوره آموزش MySQL را دنبال می کنند. در بسیاری از برنامه ها و وب سایت ها یک صفحه ی ورودی یا Login برای اعتبار سنجی و  ورود اعضاء ایجاد می شود، در اینگونه صفحات اطلاعاتی از کاربر دریافت شده و در سمت سرور با داده هایی در دیتابیس مقایسه می شود تا اعتبار سنجی انجام شود، در اینگونه موارد احتمال حملات SQL Injection یا تزریق به دیتابیس توسط هکرها وجود دارد. که در این صورت تمام داده های ذخیره شده در دیتابیس فاش خواهد شد، احتمال SQL Injection در MySQL نیز که یک سیستم مدیریت داده ی SQL می باشد نیز وجود دارد. در ادامه ی این مبحث به چگونگی جلوگیری از حملات تزریق به دیتابیس در MySQL پرداخته ایم.

      SQL Injection در MySQL

      در این آموزش با کدنویسی استاندارد برای جلوگیری از تزریق به دیتابیس در MySQL آشنا خواهید شد.

      آشنایی با SQL Injection در MySQL

      تزریق به دیتابیس در MySQL معمولا زمان دریافت ورودی از کاربران رخ می دهد.

      برای جلوگیری از SQL Injection در MySQL باید از یک الگوی تطبیق اعتبار سنجی کنید.

      در مثال زیر ورودی دریافتی از کاربران به حروف الفبا، کاراکتر زیر خط دار و طول ورودی بین ۸ تا ۲۰ کاراکتر محدود می شود:

      مثال : 

      برای نشان دادن مشکل ، کد زیر را در نظر بگیرید :

      مثال : 

      در کد فوق ورودی $name دریافتی از کاربر می تواند شامل  تمام حروف الفبا و فضاهای خالی نیز باشد.

      در اینجا ما ورودی $name که ورودی کاربر است را یک دستور DELETE نوشته ایم، که تمام داده های کاربران را حذف می کند!

      البته در هنگام استفاده از MySQL تابع mysql_query() اجازه نمی دهد که چنین Query هایی اجرا شوند.

      با این وجود در سایر دیتابیس هایی که در PHP از جمله SQLite و PostgreSQL چنین حملاتی می تواند انجام شود.

      جلوگیری از SQL Injection در MySQL

      شما می توانید تمام کاراکتر های فرار را به صورت هوشمندانه در زبان های برنامه نویسی مانند PERL و PHP اداره کنید.

      MySQL در زبان PHP تابع ()mysql_real_escape_string را برای جلوگیری از حملات Injection ارائه می دهد:

      مثال : 

      استفاده از دستور LIKE

      با استفاده از دستور LIKE می توانید با یک مکانیزم الگوی خاص ورودی کاربر را به رشته تبدیل کنید.

      با استفاده از تابع () addcslashes نیز می توانید دامنه ای محدود از کاراکترها را تعیین کنید:

      مثال : 

      کلام آخر

       تزریق به دیتابیس در MySQL یکی از حملات بسیار جدی است که دیتابیس های زبان SQL را تهدید می کند،و داده ها را در اختیار هکرها قرار می دهد. برای جلوگیری از اینگونه حملات حتما باید از کدنویسی های خاصی در سمت سرور همانند آنچه در مباحث فوق اشاره شد استفاده کنید.

      QR:  جلسه ۳۰ : تزریق به دیتابیس (SQL Injection) در MySQL
      به اشتراک بگذارید