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

موضوع: SQL Injection Defence

  1. #1
    عضو انجمن ShahreServer آواتار ها
    تاریخ عضویت
    Aug 2010
    محل سکونت
    شیراز
    نوشته ها
    108
    تشکر تشکر کرده 
    97
    تشکر تشکر شده 
    286
    تشکر شده در
    152 پست

    پیش فرض SQL Injection Defence

    -------------------------------
    برای جلوگیری از اینگونه حملات ، چندین راه در پیش دارید. اولین راه قرار دادن magic_quotes_gcp به صورت on است . با انجام این کار کاراکتر Apex در کوکی ها و ارسال هایی که توسط روش GET و POSTانجام میگریند ، ***** شده و از بین میروند. همانطور که دیدید ، کاراکتر Apex نقش مهمی در ایجاد یک حمله موفق تزریق کد های SQL بازی میکند و نبود آن باعث شکست حمله ما میشود.
    روش دیگر استفاده از تابع addslashes() است.این تابع کاراکتر های مربوط به ارسال های پایگاه داده ها مانند ( ‘ ) و ( " ( و NUL را با یک اسلش ( / ) همراه میسازد.به طور مثال :


    <?
    //addslashes() Function example
    //Attack and defence php apps book
    //shahriyar - j
    $str = "Is your name Shahriyar'j?";
    echo addslashes($str);
    // Outputs: Is your name Shahriyar\'j?
    ?>

    همانطور که میبینید کاراکتر ( ‘ ) ***** شد.
    راه دیگر برای در امان ماندن از این حملات استفاده از تابع Mysql_escape_string() است.این تابع نیز همانند تابع Addslashes() عمل میکند.ببینید:


    <?
    //mysql_escape_string() Function example
    //Attack and defence php apps book
    //shahriyar - j
    $item = "shahriyar-j's Book";
    $escaped_item = mysql_escape_string($item);
    printf("Escaped string: %s\n", $escaped_item);
    // Outputs: shahriyar-j\'s Book
    ?>

    یکی دیگر از روش هایی که میتوان برای جلوگیری از این حملات به کار برد استفاده از توابعIs_numeric() و Is_int برای گرفتن شماره کاربری است.
    آخرین راهی که برای جلوگیری از این حملات به ذهن من میرسد استفاده از تابع array_map() است.یکی از کاربرد هایی که این تابع به ما ارائه میدهد ، اعمال یک تابع بر روی ورودی هایی که به صورت آرایه هستند ،است.برای فهم این موضوع به مثال زیر دقت کنید:


    <?
    //array_map() Function Example
    //Attack and defence php apps book
    //shahriyar - j
    <?php
    function cube($n)
    {
    return($n * $n * $n);
    }
    $a = array(1, 2, 3, 4, 5);
    $b = array_map("cube", $a);
    print_r($b);
    ?>

    در کد های بالا با استفاده از تابع array_map() کاری کردیم که تابع cube با استفاده از هر یک از داد های موجود در آرایه $a اجرا شده و مقداری جدید ، ایجاد کند. نتیجه کد های بالا به صورت زیر خواهد بود.


    Array
    (
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
    )


    اکنون میتوان از این تابع به صورت زیر برای جلوگیری از حملات تزریق کد های SQL بهره جست.


    $_GET = array_map('stripslashes', $_GET);
    $_POST = array_map('stripslashes', $_POST);
    $_COOKIE = array_map('stripslashes', $_COOKIE);
    $_GET = array_map('mysql_real_escape_string', $_GET);
    $_POST = array_map('mysql_real_escape_string', $_POST);
    $_COOKIE = array_map('mysql_real_escape_string', $_COOKIE);
    $_GET = array_map('addslashes', $_GET);
    $_POST = array_map('addslashes', $_POST);
    $_COOKIE = array_map('addslashes', $_COOKIE);


    با انجام هر یک از توابع بر روی روش ها ارسالPOST ، COOKIE و GET کاراکتر های خاصی را که برای حمله مورد نیاز هستند ، ***** کرده و حمله را ناموفق میکنیم.البته شما میتوانید با استفاده از خلاقیت خود روش های جدیدی برای جلوگیری از این حملات ایجاد نمایید.
    نکته : از روش هایی که در آنها از توابع خاص استفاده شده است، تنها در صورتی استفاده کنید که مقدار magic_quotes_gpc برابر OFF باشد. برای این کار میتوانید از یک شرط ساده استفاده کنید:


    if(!get_magic_quotes_gpc())
    {
    Filter codes
    Escape codes
    Filter codes
    Escape codes
    Filter codes
    Escape codes
    }


    پایان
    ویرایش توسط ShahreServer : August 21st, 2010 در ساعت 23:53
    http://ShahreServer.com
    سرور مجازی از 10.000 تومان |-| نمایندگی هاست لینوکس |-| هاستینگ

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


  3. # ADS




     

  4. #2
    عضو دائم Rezash آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    مشهد
    نوشته ها
    1,923
    تشکر تشکر کرده 
    889
    تشکر تشکر شده 
    2,385
    تشکر شده در
    1,535 پست

    پیش فرض پاسخ : SQL Injection Defence

    ممنون
    كاش كدها رو در بلوك كد php مي ذاشتيد تا بهتر مشخص باشند
    يا اينكه الان كه رنگيشون كرديد ، چپ چين كنيد
    با اجازه منم يك نكته رو اضافه كنم!
    موقع اتصال يك يوزر به يك ديتابيس ، اكثرا تا جايي كه ديدم فوري روي تيك all privilages كليك مي كنن و همه دسترسي ها رو به يوزر مي دند...
    در واقع اين كار يك اشتباه محض ـه ! ما بايد بسته به نيازي كه داريم اختيارات رو به يك يوزر بديم.
    مثلا در يك سايت كه فقط قرار هست اخبار نمايش داده بشه تنها قابليت SELECt كافيه...
    چون اگه حتي ورودي ها فيلتر نشده باشند كار زيادي از دست كاربر بر نمياد...
    ولي اگه ورودي ها فيلتر نشده باشند و پرميشن هاي بيشتري مثل DELETE،UPDATE,INSET,INDEX,DROP و و.... فعال باشه كاربر مي تونه اعمال مخربانه تري رو انجام بده...
    از طرفي در بخش مديريت ممكنه نياز به پرميشن هاي بيشتري داشته باشيم! معمولا براي بخش مديريت سايت هاي شخصيم يك يوزر جدا در نظر مي گيريم كه اختيارات بيشتري داره و از طرفي با خود سي پنل يا ... دسترسي رو محدود تر مي كنم . اينجوري اگه حتي در كد نويسي هم مشكلاتي رو داشته باشم به راحتي قابل نفوذ نيست!
    بک آپ بگیرید قبل از آنکه پشیمان شوید!
    تشخیص سیستم مدیریت محتوای سایت - سایت شخصی

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


  6. #3
    عضو دائم vPsPersia.COM آواتار ها
    تاریخ عضویت
    Apr 2009
    محل سکونت
    کرمانشاه
    نوشته ها
    1,045
    تشکر تشکر کرده 
    346
    تشکر تشکر شده 
    1,809
    تشکر شده در
    997 پست

    پیش فرض پاسخ : SQL Injection Defence

    موقع اتصال يك يوزر به يك ديتابيس ، اكثرا تا جايي كه ديدم فوري روي تيك all privilages كليك مي كنن و همه دسترسي ها رو به يوزر مي دند...
    پس برای نصب اسکریپت هایی نظیر نیوک یا وی بی و .. باید چه تیک های رو بزنیم؟؟
    [CENTER]فروش ویژه سرور های مجازی با منابع اختصاصی

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

  7. تعداد تشکر ها از vPsPersia.COM به دلیل پست مفید


  8. #4
    عضو دائم Rezash آواتار ها
    تاریخ عضویت
    Feb 2010
    محل سکونت
    مشهد
    نوشته ها
    1,923
    تشکر تشکر کرده 
    889
    تشکر تشکر شده 
    2,385
    تشکر شده در
    1,535 پست

    پیش فرض پاسخ : SQL Injection Defence

    نقل قول نوشته اصلی توسط vPsPersia.COM نمایش پست ها
    پس برای نصب اسکریپت هایی نظیر نیوک یا وی بی و .. باید چه تیک های رو بزنیم؟؟
    دقيقا نمي دونم اين سي ام اس ها چه جوري كد نويسي شدند،ممكنه در ماژول هاي خاصي نياز به همه پرميشن ها باشه.
    ميتونيد تست كنيد،مثلا drop فكر نكنم بكار رفته باشه ولي اگه در injection بشه drop كرد تمام اون جدول با اطلاعاتش مي پره واين گاهي يعني فاجعه
    پرميشن هايي مثل index و drop و creat تا اونجا كه به نظرم ميرسه نبايد جز در بخش پشتيبان گيري اين سي ام اس ها استفاده شده باشند(اگر شده باشند!)
    كه به نظر من معقولانه تر اينه كه اين پرميشن ها داده نشه و بك آپ گيزي اگه از كار افتاد از phpmyadmin استفاده بشه
    چون خيلي از اطلاعاتي كه كاربر از پايگاه داده براي نفوذ ميكشه به index هم ربط داره!اينكه چه جدوالي داريم و ...
    پس اگه بسته باشه خيلي كمك مي كنه...
    البته من نميگم كه دادن همه پرميشن ها هميشه يك اشتباه محضه!در واقع اين پرميشن ها از خصوصيات قابل توجهي هست كه در اختيار داريم ولي خلاصه كل حرفام اين بود كه در حد نياز اين پرميشن ها رو بذاريم...
    و گرنه مثلا ممكنه در بعضي cms ها براي نصب ماژول يا حذف و اين چنين عملياتي استفاده از drop و ... امري اجتناب ناپذير باشه اما هميشه اينطور نيست
    براي نمونه در مثالي زدم كه ممكنه در يك سايت فقط نياز به نمايش اخبار داشته باشيم ...
    بک آپ بگیرید قبل از آنکه پشیمان شوید!
    تشخیص سیستم مدیریت محتوای سایت - سایت شخصی

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


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

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

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

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

  1. مشکل sql injection
    توسط rezah در انجمن PHP-MySQL
    پاسخ ها: 2
    آخرين نوشته: November 19th, 2017, 13:50
  2. جلوگیری از هک sql injection
    توسط mashhadweb در انجمن PHP-MySQL
    پاسخ ها: 5
    آخرين نوشته: March 18th, 2015, 17:23
  3. جلوگیری از حملات Sql injection
    توسط yastheme در انجمن PHP-MySQL
    پاسخ ها: 1
    آخرين نوشته: November 10th, 2013, 11:42
  4. sql injection
    توسط 0senjed0 در انجمن سوالات و مشکلات
    پاسخ ها: 2
    آخرين نوشته: August 16th, 2012, 17:46

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

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