نمایش نتایج 1 تا 14 از 14

نام تاپیک: امنیت اسکریپت + sql injection

  1. #1

    امنیت اسکریپت + sql injection

    با سلام و عرض ادب
    دوستان یک سیستم ارسال تیکت رو دارم می نویسم (البته در حد مبتدی ) .
    ورودی ها اسکریپت بالا 100 هست , میخوام یه خورده رو امنیتش کار کنم , چطور میتونم یه فانکشن بنویسم برای همه ورودی هام که با sql injection مواجه نشم ؟؟
    و با چه نرم افزاری میتونم باگ ها رو چک کنم ؟؟
    ممنون میشم بنده رو راهنمایی کنید .

  2. #2
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: امنیت اسکریپت + sql injection

    این رو توی 1 فایل که همه جا اینکلود میشه ( مثلا config.php ) بنویسید:


    function safe( &$value, $key ) {
    $value = trim( $value );
    $value = stripslashes( $value );
    $value = mysql_real_escape_string( $value );
    }
    array_walk_recursive( $_POST, 'safe' );
    array_walk_recursive( $_GET, 'safe' );
    آخرین ویرایش به وسیله AbiriAmir : چهارشنبه 16 اسفند 1391 در 19:31 عصر دلیل: تغییر مکان پارامترها

  3. #3

    نقل قول: امنیت اسکریپت + sql injection

    با سلام
    - هیچ مقداری نیاز نیست بهش بدیم ؟؟
    - حالا راهی هست که از امن بودن اسکریپت مطمئن بشیم (منظورم تا حدودی هست که جوجه هکرها نتونن با ترفندهای ساده بتونن اسکریپت رو دور بزنن) ؟

  4. #4

    نقل قول: امنیت اسکریپت + sql injection

    نه دیگه گفته هر post و get که تو صفحه استفاده بشه از این فیلتر بگذره.
    LIKE

  5. #5
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: امنیت اسکریپت + sql injection

    از امن بودن چی مطمئن بشید؟
    راهی که بنده گفتم یا کلا اسکریپت؟
    ببینید ما انواع حملات داریم
    کدی که بنده دادم خدمتتون کل ورودی ها رو از تابع mysql_real_escape_string میگذرونه
    پس سایت شما در برابر حملات sql injection امن میشه
    اما حملاتی مثل xss میمونه
    مثلا اگر در اسکریپت شما جایی نیست که نیاز باشه کد html وارد بشه بهتره از صافی strip_tags یا htmlspecialchars هم بگذرونیدش که کسی کد js واردش نکنه... ( با این حملات میشه سایت رو هم دیفیس کرد. به طور مثال وارد کردن کد js در بخش نظرات 1 سایت خبری )
    روش سمت سرور رو هم اگر درست اعمال بشه نمیشه دور زد دوست عزیز
    آخرین ویرایش به وسیله AbiriAmir : دوشنبه 14 اسفند 1391 در 13:54 عصر

  6. #6

    نقل قول: امنیت اسکریپت + sql injection

    با سلام
    من این کد ها رو استفاده کردم ولی مطمئن نیستم جواب داده باشه راهی هست بشه چک کرد ؟

  7. #7
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: امنیت اسکریپت + sql injection

    مطمئن نیستید جواب داده باشه؟!
    شما 1 نگاه به کد بکنید میفهمید جواب میده یا نه! همون کاری که همه به ازای هر فیلدی انجامش میدن (فیلتر کردن) توی این کد اتوماتیک روی تمام ورودی ها انجام شده... مشکلتون کجاست؟
    خیلی اصرار دارید ببینید درسته یا نه کد sql توی فیلدهاتون وارد کنید
    به عبارتی حمله sql injection رو شبیه سازی بکنید ببینید جواب داده یا نداده!

  8. #8

    نقل قول: امنیت اسکریپت + sql injection

    این کد من استفاده کردم ولی هیچ کار خاصی انجام نمیده حتی sql هم زدم
    <?php 
    function safe( $key, &$value ) {
    $value = mysql_real_escape_string( $value );
    }

    array_walk_recursive( $_POST, 'safe' );
    array_walk_recursive( $_GET, 'safe' );

    ?>
    <form action="" method="post">
    <input name="test" type="text" />
    <input name="" type="submit" />
    </form>
    <hr />
    <?php
    echo $_POST['test'];
    ?>

  9. #9
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: امنیت اسکریپت + sql injection

    دوست عزیز قرار هم نیست تغییری توی echo ایجاد شه
    این توی query ها تاثیر میذاره و مانع از sql injection میشه
    شما توی php کد زیر رو بزن ببین چی میبینی:

    echo mysql_real_escape_string( "' or '' = '" );


    اون چیزی که شما میخواین (که توی خروجی تغییر ایجاد کنه) تابع addslasehs هست...
    ( توی همون کدی که نوشتید mysql_real_escape_string رو با addslashes جایگزین کنید متوجه میشید که کار داره انجام میشه )
    آخرین ویرایش به وسیله AbiriAmir : دوشنبه 14 اسفند 1391 در 15:23 عصر

  10. #10

    نقل قول: امنیت اسکریپت + sql injection

    سلام
    مطالبی که امیر جان گفتند کاملا صحیح هست شما قبل از اینکه مقادیری که کاربر در فرم وارد کرده رو مستقیما به دیتابیس بفرستید، باید اونها رو در فانکشنی که امیر جان دادن قرار بدین تا اونها رو از نظر sql امن بکنه تا خللی در query ایجاد نشه.

    حالا اگر می خواهید خودتون هم خیالتون راحت بشه ( تا حدودی) می تونید این نرم افزار رو دانلود کنید و باهاش سایتتون رو اسکن کنید ببینید مشکلی از نظر sql نداشته باشه
    http://www.acunetix.com/vulnerability-scanner/download/

    همچنین نرم افزار آلبالو هم هست که اونم خوبه.
    http://redmove.persiangig.com/MyProg...aloo%201.3.exe

  11. #11

    نقل قول: امنیت اسکریپت + sql injection

    نقل قول نوشته شده توسط AbiriAmir مشاهده تاپیک
    این رو توی 1 فایل که همه جا اینکلود میشه ( مثلا config.php ) بنویسید:


    function safe( $key, &$value ) {
    $value = trim( $value );
    $value = stripslashes( $value );
    $value = mysql_real_escape_string( $value );
    }
    array_walk_recursive( $_POST, 'safe' );
    array_walk_recursive( $_GET, 'safe' );
    با تشکر از شما که به سوال ابتدای بنده پاسخ دادید ...
    فقط امیر اقا من قبلا یه از یه فانکشن استفاده میکردم , که باید به صورت دستی بر روی همه ورودی ها ست بشه :
       function sanitizeString($var)
    {
    $var = strip_tags($var);
    $var = htmlentities($var);
    $var = stripslashes($var);
    return mysql_real_escape_string($var);
    }

    حالا میشه این فانکشن رو هم به صورت اتوماتیک در فایل فانکشنم قرار بدم که دیگه نیازی نباشه بر روی همه ورودی ها ست بشه !؟؟

  12. #12
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: امنیت اسکریپت + sql injection

    بله میشه

    function safe( &$value, $key ) {
    $value = trim( $value );
    $value = strip_tags( $value );
    $value = htmlentities( $value, ENT_COMPAT, 'UTF-8' );
    $value = stripslashes( $value );
    $value = mysql_real_escape_string( $value );
    }
    array_walk_recursive( $_POST, 'safe' );
    array_walk_recursive( $_GET, 'safe' );


    trim رو هم خود بنده اضاف کردم در بسیاری موارد خوب هست
    مثلا خیلی ها عادت دارند آخر نام کاربری یا پسورد خود اسپیس میزنند
    اما این کد ممکنه فقط 1 جا برای شما مشکل ساز بشه
    اون هم استفاده از اون توی بخش مدیریت هست (یا به طور کلی هر جا که لازم باشه کد html وارد بشه)
    مثلا با این کد اگر مدیر در ادیتور متنی را وارد کند به طور خودکار تگ های html آن هم پاک میشود
    برای این که تاپیک کامل بشه راه حل اون رو هم عرض میکنم:


    function safe( &$value, $key ) {
    $value = trim( $value );
    if( strpos( $key, 'text' ) !== false ) {
    $value = strip_tags( $value );
    $value = htmlentities( $value, ENT_COMPAT, 'UTF-8' );
    }
    $value = stripslashes( $value );
    $value = mysql_real_escape_string( $value );
    }
    array_walk_recursive( $_POST, 'safe' );
    array_walk_recursive( $_GET, 'safe' );


    این کد کارش اینه که اولا همه ورودی ها رو از نظر امنیتی چک میکنه
    ثانیا چک میکنه اگر در اسم فیلد کلمه text وجود داشت اونوقت دستور strip_tags و htmlentities رو اجرا نمیکنه (این برای جاهایی خوبه که کد html هم میتونه وارد بشه)
    بنابراین با استفاده از این کد کافیه که شما توی کل سیستمتون هرجایی ورود کد html مجاز بود در اسم فیلد کلمه text رو هم بکار ببرید و جاهایی که html مجاز نیست هم به هیچ وجه کلمه text رو در اسم فیلدتون بکار نبرید که باعث حمله xss نشه
    با این کد به راحتی میتونید جلوی حملات sql injection و xss رو بگیرید ;)
    آخرین ویرایش به وسیله AbiriAmir : چهارشنبه 16 اسفند 1391 در 19:30 عصر دلیل: تغییر مکان پارامترها

  13. #13

    نقل قول: امنیت اسکریپت + sql injection

    من قبلا از اين تابع استفاده کردم ميخاستم ببينم ميشه اين تابع رو بجاي اين تابع safe بکار برد

    function replace($str) {
    $str=str_replace("ی","ي","$str");
    $str=str_replace("ک","ك","$str");
    $str=trim(mysql_real_escape_string(htmlspecialchar s($str)));
    return $str;
    }

  14. #14
    کاربر دائمی
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    ایران، شیراز، ... ، خونمون، روبروی مانیتور
    پست
    539

    نقل قول: امنیت اسکریپت + sql injection

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


    function replace($str) {
    $str=str_replace("ی","ي","$str");
    $str=str_replace("ک","ك","$str");
    $str=trim(mysql_real_escape_string(htmlspecialchar s($str)));
    return $str;
    }
    function myReplace( &$value, $key ) {
    $value = replace( $value );
    }

    array_walk_recursive( $_POST, 'myReplace' );
    array_walk_recursive( $_GET, 'myReplace' );

تاپیک های مشابه

  1. گفتگو: امنیت فرم و جلوگیری از sql injection و XSS
    نوشته شده توسط maysam.m در بخش PHP
    پاسخ: 6
    آخرین پست: یک شنبه 29 اسفند 1389, 17:02 عصر
  2. حفاظت از برنامه های خود در مقابل SQL Injection
    نوشته شده توسط Vahid_Nasiri در بخش امنیت در نرم افزار و برنامه نویسی
    پاسخ: 19
    آخرین پست: شنبه 06 اسفند 1384, 09:17 صبح
  3. sql injection
    نوشته شده توسط houtanal در بخش PHP
    پاسخ: 3
    آخرین پست: یک شنبه 10 اسفند 1382, 19:29 عصر
  4. SQL INJECTION & ASP.NET
    نوشته شده توسط faramarz_s در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: سه شنبه 21 بهمن 1382, 13:24 عصر
  5. sql injection
    نوشته شده توسط hmm در بخش SQL Server
    پاسخ: 4
    آخرین پست: شنبه 11 بهمن 1382, 18:37 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

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