نمایش نتایج: از شماره 1 تا 7 , از مجموع 7

موضوع: آموزش بستن باگ SQL injection در PHP

Threaded View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    عضو جدید ParnianData آواتار ها
    تاریخ عضویت
    Jun 2015
    محل سکونت
    یزد
    نوشته ها
    7
    تشکر تشکر کرده 
    35
    تشکر تشکر شده 
    14
    تشکر شده در
    8 پست

    Question آموزش بستن باگ SQL injection در PHP

    سلام روزتون بخیر

    خب بی مقدمه بریم سراغ اموزش:

    آموزش بستن باگ SQL injection در PHP :


    اول بپردازیم به این که این باک ها چجوری ایجاد میشن .

    ببینید در بحث واکشی از پایگاه داده ما از طریق دستورات PHP یه Query جاری میکنیم تا اطلاعات مارو از دیتابیس بخونه برای مثال :
    SELECT * FROM content WHERE title='ParnianData'

    در این کوئری ما درخواست کردیم تا هرچی ستون هست رو جایی که تایتل ما ParnianData هست انتخاب کن .


    خوب اگه ورودی های ما امن نباشه هکر میتونه یه سری دستورات دیگه به این کوئری ما تزریق کنه . برای مثال :
    SELECT * FROM content WHERE title=$_GET['title']

    ما خواستیم هرچیزی که در مقدار title هست جستجو بشه در حقیقت هرچیزی در آدرس بار در مقدار title هست داخل دیتابیس سرچ بشه به این صورت :
    localhost/post.php?title=ParnianData

    حالا برای خراب کردن این کوئری کافیه یدونه ' در آخر آدرس بار وارد کنیم .
    localhost/post.php?title=ParnianData'

    جالا کوئری جاری میشه :
    SELECT * FROM content WHERE title=$_GET['title']'

    و اروری نشون میده مبنی بر این که کوئری سالم نیست .

    و از این طریق هکر میفهمه که ورودی های ما امن نیست و میشه دستورات رو تزریق کرد .

    خوب حالا هکر میاد از طریق دستورات ORDER BY , Union Select تعداد ستون ها و ردیف های مارو از دیتابیس میخونه و شروع میکنه به بیرون کشیدن نام جدول هامون .

    و سپس کوئری مورد نظر خودش رو تزریق میکنه تا به رمز و یوزر مدیریت سایت برسه و یا محتوایی رو روی وبسایت اضافه یا کم کنه .

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

    ما میتونیم از توابع موجود زیادی در PHP برای امن کردن ورودی ها استفاده کنیم .

    به عنوان مثال :

    filter_var
    str_replace
    mysql_real_scape_string
    .
    .
    .

    ما توی این جلسه قصد داریم با مورد سوم کار کنیم .

    برای شروع کار ما باید ورودی رو داخل یه متغیر بریزیم :
    $title = $_GET['title']

    حالا امن کنیم :
    $title = mysql_real_scape_string($_GET['title'])

    در این صورت ورودی ما بصورت استرینگ های قابل قبول برای Mysql تعریف میشه و اگه کاراکتر غیر مجاز یا کوئری دیگه ای بخوایم جاری کنیم تبدیل میشه به یه چیز نا مفهوم .

    و حالا متغیر تایتل رو در کوئری مورد نظر جایگذین میکنیم :
    $title = mysql_real_scape_string($_GET['title'])

    SELECT * FROM content WHERE title='$title'

    به این صورت ورودی ما امن شد .

    در جلسات بعدی بصورت ترکیبی اقدام به ساخت یه مجموعه ای از توابع برای ایمن کردن ورودی ها خواهیم پرداخت .

    موفق باشید .

    با تشکر از گروه ادمینا
    فایل پی دی اف هم ضمیمه شد
    فایل های پیوست شده فایل های پیوست شده

  2. تعداد تشکر ها ازParnianData به دلیل پست مفید


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. تزریق وابستگی در فریم ورک اسپرینگ (Dependency Injection)
    توسط saeed.mihan در انجمن دیگر زبان ها
    پاسخ ها: 1
    آخرين نوشته: July 10th, 2017, 00:32
  2. جلوگیری از هک sql injection
    توسط mashhadweb در انجمن PHP-MySQL
    پاسخ ها: 5
    آخرين نوشته: March 18th, 2015, 17:23
  3. آموزش تصویری پچ کردن باگ های SQL Injection
    توسط News -Portal در انجمن مباحث دیگر
    پاسخ ها: 0
    آخرين نوشته: March 8th, 2014, 12:41
  4. آموزش تصویری پچ کردن باگ های SQL Injection
    توسط News -Portal در انجمن مباحث دیگر
    پاسخ ها: 0
    آخرين نوشته: March 8th, 2014, 12:40
  5. جلوگیری از حملات Sql injection
    توسط yastheme در انجمن PHP-MySQL
    پاسخ ها: 1
    آخرين نوشته: November 10th, 2013, 11:42

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •