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



  • ۱
  • شهریور

جلسه ۵۲ : تکنیک Injection در SQL

  • دسته‌بندی‌ها :
جلسه ۵۲ : تکنیک Injection در SQL
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

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

      تکنیک Injection در SQL

      تکنیک SQL injection، در واقع یک تکنیک تزریق کد است، که برای نفوذ به سایر پایگاه های داده استفاده می شود.

      injection از رایج ترین روشهای هک کردن یک وب سایت است.

      injection در واقع تزریق کدهای SQL، در ورودی صفحه وب است.

      SQL در صفحات وب

      SQL injection زمانی رخ می دهد که شما از یک کاربر برای ورودی درخواست می کنید.

      اطلاعات نام کاربری و رمز عبور ، در قالب کدهای SQL برای شما ارسال می شود.

      مثال:

      ایجاد یک کد SELECT با افزودن متغیر txtUserId  برای انتخاب نوع string از جدول Users :

      مثال : 

      SQL injection بر اساس ۱=۱ همیشه برابر با TRUE است

      به مثال فوق دقت کنید. هدف ایجاد یک دستور SELECT، برای انتخاب از جدول Users، بر اساس UserId دریافتی از کاربر است.

      اگر کدی برای کنترل ورودی کاربر، و جلوگیری از وارد کردن ورودی اشتباه، ایجاد نکرده اید، می توانید از کد هوشمند زیر استفاده کنید:

      UserId:

      و کد SQL مثال فوق، می تواند بصورت زیر باشد:

      مثال : 

      کد فوق تمام رکوردهای جدول “Users” را انتخاب می کند، چراکه عبارت OR 1=1،در SQL،  همیشه True است.

      اما اگر جدول فوق دارای فیلدهایی مانند نام و رمز عبور باشد،می توانید از کدی مانند نمونه زیر استفاده کنید:

      مثال : 

      هکر می تواند به تمام نامهای کاربری و کلمه عبور در یک پایگاه داده، به سادگی با قرار دادن ۱۰۵ OR 1 = 1 در فیلد ورودی، دسترسی پیدا کند.

       injection همیشه بر اساس “”=”” درست (True) عمل می کند

      ورودی ها زیر ، مثالی از فرم Login یک وب سایت است:

      Username:

      Password:

      مثال : 

      نتایج در SQL:

      مثال : 

      یک هکر ممکن است به سادگی با وارد کردن “OR” “=” به نام کاربری یا رمز عبور جعبه متن به نامهای کاربری و کلمه عبور در یک پایگاه داده دسترسی پیدا کند:

      User Name:

      Password:

      سپس کد موجود در سرور یک عبارت معتبر SQL ایجاد می کند مثل این:

      مثال : 

      کد فوق تمام رکوردهای جدول “Users” را انتخاب می کند، چراکه عبارت OR “”=””،در SQL،  همیشه True است.

      ساختار SQL Batched

      اغلب بانک های اطلاعاتی از ساختار batched پشتیبانی می کنند.

      یک batch در واقع گروهی از یک یا دو کد SQL است که با سمی کولون (;) از هم جدا شده اند.

      مثال:

      کد SQL زیر، ابتدا تمام رکوردهای جدول Users را انتخاب کرده و سپس جدول Suppliers را حذف می کند:

      مثال : 

      به مثال زیر توجه کنید:

      مثال : 

      حالا فرض کنیم کاربر ورودی زیر را وارد کند:

      User id:

      نتیجه مثال فوق در SQL بصورت زیر خواهد بود:

      مثال : 

      استفاده از پارامترهای SQL برای محافظت و مقابله با حملات SQL injection

      برای محافظت از وب سایت خود در برابر SQL injection، شما می توانید از پارامترهای SQL استفاده کنید:

      استفاذه از پارامترها در query های SQL باعث جلوگیری از نفوذ injection می شود.

      مثال:

      مثال : 

      برای دریافت ورودی با استفاده از پارامتر در SQL باید از علامت “@” قبل از نام پارامتر، استفاده کنید.

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

      مثال۲:

      مثال : 

      سایر مثالها

      مثالهای زیر، چگونگی استفاده از پارمترها را در پرس و جوهای SQL، نشان می دهد:

      مثال۱:

      کدهای SELECT در ASP.NET:

      مثال : 

      مثال۲:

      کد INSERT INTO در  ASP.NET:

      مثال : 

      کد INSERT INTO در PHP:

      مثال : 

      کلام آخر

      در این آموزش، ما یکی از ابزارهای مهم دسترسی غیر مجاز و نفوذ به داده های یک پایگاه داده که توسط هکرها استفاده می شود را بررسی کردیم. و در ادامه چگونگی مقابله با این تهدیدات را نیز، ارائه کردیم. امیدواریم که از مباحث آموزش آشنایی با تکنیک Injection در SQL بخوبی استفاده کرده باشید.

      QR:  جلسه ۵۲ : تکنیک Injection در SQL
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر