/
  • CSRF Attacks

  • صفحه‌ها (2):
  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 3
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی CSRF Attacks
    نویسنده پیام
    phpveteran آفلاین
    رامين فرماني
    *******

    ارسال‌ها: 266
    تاریخ عضویت: ۱۳۸۸ خرداد ۱۴
    اعتبار: 14
    تشکرها : 11
    ( 514 تشکر در 204 ارسال )
    ارسال: #1
    CSRF Attacks
    خوب پيش از اينكه به جزئيات نحوه پيشگيري از حملات موسوم به CSRF بپردازيم اجازه بدين كمي اين نوع حملات رو براتون توضيح بدم.

    Cross Site Request Forgery كه به نام‌هاي ديگري چون (XSRF, CSRF (Cross Site Reference Forgery شهرت داره كه از اعتماد سايت‌ها نسبت به كاربرانشان براي حملات خود سوءاستفاده مي‌كند. انجام امور گوناگون سايت‌ها عموماً در URL آنها تعريف مي شود بطور مثال آدرس http://site/stocks?buy=100&stock=ebay كار بخصوصي را زمان اعمال درخواست انجام مي‌دهد. زماني كه يك كاربر در سايتي Login كند و يك نفوذگر توسط مرورگر كاربر يك درخواست عملياتي مشابه مثال بالا ارسال كند، درخواست اجرا شده و به عنوان يك درخواست اين كاربر تعمه ذخيره مي شود. اين كار توسط كدهاي مخرب HTML يا جاوااسكريپت در ايميل يا داخل سايتي ديگر بصورت مخفي و بدون آگاهي كاربر قابل انجام است و كافيست كه كاربر همزمان دو پنجره را باز كرده باشد كه اين روزها امري كاملاً مرسوم است. اينگونه تزريقات درلابلاي زبان‌هاي نشانه گذاري سبك مثل BBCode و... نيز كاملا شدني است كه اين نيز به نوبه خود به هرچه

    خطرناكتر شدن اين حملات كمك مي‌كند. اين نوع حملات در حين پردازش فرمها نيز اتفاق مي افتد كافيست تا حمله كننده نام مشابهي براي input هاي خود استفاده كرده و حتي توسط جاوااسكريپت بدون آگاهي كاربر بصورت auto-submit فرم ها را ارسال كند.

    در طي اين آموزش نحوه نوشتن و پاك كردن يك فرم پيش از پست آن آموزش داده مي‌شود:
    در ابتدا پيشنهاد مي‌شود بجاي استفاده از GET در مورد اطلاعات مهم از متد POST استفاده كنيد و براي بررسي داده ها بجاي استفاده از REQUEST از POST استفاده كنيد ديگر آنكه مبناي تئوريك اين حمله ارسال اطلاعات جعلي توسط مقادير يك فرم است بنابراين اگر كاربري فرمي را بفرستد كه قبلا براي آن درخواستي نفرستاده مي توان به آن مشكوك شد. بنابراين:

    1. پس از هر <form method="POST"> در تمامي توابع نمايشي خود با فرض مهم بودن اطلاعات فرم كد زير را قرار دهيد
    کد PHP:
    <input type="hidden" name="token" value="<?echo ($_SESSION['token'])" /> 

    2. كد زير را در فايل پيكربندي خود قرار دهيد
    کد PHP:
    if (isset($_USER['id'])) { // your function to check if a user is logged in
    if (empty($_SESSION['token']) || !isset($_SESSION['token'])) { // if there is no token set
    $_SESSION['token'] = strrev(md5($_USER['password'])); //set a token with a reverse string and md5 encryption of the user's 

    password
    }
    if (
    CSRF_PROTECTED != false) { // if you did not define CSRF_PROTECTED as false
    if ($_POST) { // if there is a form present
    if ($_POST['token'] != $_SESSION['token']) { // if the input token does not equal the session token
    header("Location: /index.php"); // redirect to index
    die(); // stops all $_POST data from being sent
    }
    }
    }

    3.در تمامي صفحاتي كه يك كاربر Login كرده مي تواند به آنها دسترسي داشته باشد و شما نمي خواهيد حجوم اين حملات مورد بررسي قرار گيرد كد زير را پيش از تمامي include هاي فايلهاي Config مهم خود قرار دهيد.
    کد PHP:
    define("CSRF_PROTECTED"false); 

    پ.ن ١: موارد ديگري مثل ست كردن زمان درخواست فرم و كنترل ارسال داده پس از مدت زمان مشخص بعد درخواست و برخي موارد ديگر به اين سيستم قابل تزريق مي‌باشد
    پ.ن 2: اين مطالب متعلق به وبلاگ شخصي رامين فرماني به آدرس http://blog.farmani.ir و استفاده از اين مطالب تنها با ذكر نام وب سايت مجاز مي‌باشد
    __________________________________________________________________________
    ۱۳۸۸ خرداد ۲۱ ۱۰:۴۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Na3r oia zoghal molana admin scooter php HiddeN Muhammad-Ali
    Y.P.Y آنلاین
    ناظم کل
    *******

    ارسال‌ها: 2,790
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 105
    تشکرها : 2182
    ( 4871 تشکر در 2228 ارسال )
    ارسال: #2
    RE: CSRF Attacks
    سلام،
    مرسی عزیز...
    فقط اینکه متغیر $_USER['id'] در جایی تعریف شده یا خیر؟
    در ضمن register_globals شما خاموش هستش یا روشن؟
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۸۸ خرداد ۲۲ ۰۱:۰۱ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    phpveteran آفلاین
    رامين فرماني
    *******

    ارسال‌ها: 266
    تاریخ عضویت: ۱۳۸۸ خرداد ۱۴
    اعتبار: 14
    تشکرها : 11
    ( 514 تشکر در 204 ارسال )
    ارسال: #3
    RE: CSRF Attacks
    كامنت ها در مورد متغيرها توضيح داده اند
    register_globals در php 6 كاملا حذف شده و مدت هاست توصيه به off بودن آن مي شود
    __________________________________________________________________________
    ۱۳۸۸ خرداد ۲۲ ۰۲:۰۱ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Y.P.Y آنلاین
    ناظم کل
    *******

    ارسال‌ها: 2,790
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 105
    تشکرها : 2182
    ( 4871 تشکر در 2228 ارسال )
    ارسال: #4
    RE: CSRF Attacks
    نقل قول: كامنت ها در مورد متغيرها توضيح داده اند
    register_globals در php 6 كاملا حذف شده و مدت هاست توصيه به off بودن آن مي شود
    می دونم عزیز. منظورم متغیر $_USER هستش؟
    register_globals شما رو هم گفتم. خاموشه یا روشن؟
    تشکر.
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۸۸ خرداد ۲۲ ۰۲:۴۲ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    phpveteran آفلاین
    رامين فرماني
    *******

    ارسال‌ها: 266
    تاریخ عضویت: ۱۳۸۸ خرداد ۱۴
    اعتبار: 14
    تشکرها : 11
    ( 514 تشکر در 204 ارسال )
    ارسال: #5
    RE: CSRF Attacks
    (۱۳۸۸ خرداد ۲۲ ۰۲:۴۲ عصر)Y.P.Y نوشته شده توسط:  
    نقل قول: كامنت ها در مورد متغيرها توضيح داده اند
    register_globals در php 6 كاملا حذف شده و مدت هاست توصيه به off بودن آن مي شود
    می دونم عزیز. منظورم متغیر $_USER هستش؟
    register_globals شما رو هم گفتم. خاموشه یا روشن؟
    تشکر.
    اي بابا ميگم متغير user توضيح داده شده صرفا براي بررسي لاگين بودن كاربره توضيحات من در مورد register_globals روشن بود كدها و آموزش جنبه آموزشي دارن حالا شما دنبال چي هستين من نمي دونم اگر اينها خلاف قوانين و مقررات بوده دستور بفرمائين خودم پست رو پاك كنم
    __________________________________________________________________________
    ۱۳۸۸ خرداد ۲۲ ۰۶:۱۳ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : Na3r
    Y.P.Y آنلاین
    ناظم کل
    *******

    ارسال‌ها: 2,790
    تاریخ عضویت: ۱۳۸۷ دي ۲۸
    اعتبار: 105
    تشکرها : 2182
    ( 4871 تشکر در 2228 ارسال )
    ارسال: #6
    RE: CSRF Attacks
    عزیز چرا ناراحت میشید؟
    من فکر کردم نام $_USER جزو Predefined variable های PHP هستش که تا به حال ندیده بودم و واقاً تعجب کردم! چون عیناً شبیه به همون متغیر ها نوشته بودیدش. بدون تعریف از قبل... بعد هم که گفتم register_globals شما خاموشه یه روشن. به همین دلیه...
    در هر صورت پوزش میخوام، منظوری نداشتم.
    __________________________________________________________________________
    وبلاگ: Yousha.Blog.ir

    صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
    http://gulfnews.com/opinion/thinkers/ira...i-1.500997
    ۱۳۸۸ خرداد ۲۲ ۰۷:۱۵ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    phpveteran آفلاین
    رامين فرماني
    *******

    ارسال‌ها: 266
    تاریخ عضویت: ۱۳۸۸ خرداد ۱۴
    اعتبار: 14
    تشکرها : 11
    ( 514 تشکر در 204 ارسال )
    ارسال: #7
    RE: CSRF Attacks
    خوب قربون شكلت سوالي داري مثل بچه آدم سوالت رو بپرسTongue دليل اين عصبانيت هم شايد بچه هاي قديمي بدونن قبلا هم در پست هاي مشابه كساني اومدن به ايراد گرفتن كه هيچ اطلاعي تا قبل از پست من از موضوع نداشتن و هرچي هم بهشون مي گفتم به منوال مراجعه كنين برميگشتن چرند جواب مي دادن اينجا هم هي من مي گم تو كامنت جلوي متغير توضيح دادم شما هي برميگردي ميگي register_globals من چيه سعي كنين دقيقا سوالتون رو مطرح كنين و وقتي پاسخي داده ميشه دقيقا به راهنمائي داده شده رجوع كنين
    __________________________________________________________________________
    ۱۳۸۸ خرداد ۲۳ ۱۱:۱۳ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : molana
    scooter آفلاین
    عضو مهم
    ****

    ارسال‌ها: 391
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 3
    تشکرها : 239
    ( 54 تشکر در 42 ارسال )
    ارسال: #8
    RE: CSRF Attacks
    من یه سوال دارم
    اگه rg در php 6 کاملا حذف میشه.پس تکلیف نرم افزارهایی که برای اجراش حتما باید rg روشن باشه چیه؟
    یه سوال دیگه منظور از فایل پیکر بندی چیه؟.ini
    اقای فرمانی همیشه از این کارا بکن امید ما جوونای بی تجربه به امثال شما پیرمردهای با تجربه ست!
    __________________________________________________________________________
    welcome to the club
    (آخرین ویرایش در این ارسال: ۱۳۸۸ خرداد ۲۴ ۰۷:۰۴ عصر، توسط scooter.)
    ۱۳۸۸ خرداد ۲۴ ۰۶:۴۳ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : phpveteran
    phpveteran آفلاین
    رامين فرماني
    *******

    ارسال‌ها: 266
    تاریخ عضویت: ۱۳۸۸ خرداد ۱۴
    اعتبار: 14
    تشکرها : 11
    ( 514 تشکر در 204 ارسال )
    ارسال: #9
    RE: CSRF Attacks
    (۱۳۸۸ خرداد ۲۴ ۰۶:۴۳ عصر)scooter نوشته شده توسط:  من یه سوال دارم
    اگه rg در php 6 کاملا حذف میشه.پس تکلیف نرم افزارهایی که برای اجراش حتما باید rg روشن باشه چیه؟
    یه سوال دیگه منظور از فایل پیکر بندی چیه؟.ini
    اقای فرمانی همیشه از این کارا بکن امید ما جوونای بی تجربه به امثال شما پیرمردهای با تجربه ست!

    پيرمرد باباتهAngry من هنوز اول چلچليمهBlush ها خوب
    مشكل اون نرم افزارهاست به اين مسئله ميگن backward compatibility كه به تدريج سعي ميشه حذف بشه تا مشكل تين تيپي پيش نياد در حقيقت مدتهاست كه توصيه اكيد به خاموش شدن اين كانفيگ ميشه
    منظور همون php.ini هست ديگه
    آهان تا يادم نرفته بزودي در مورد ديگر حملات مقاله خواهم نوشت كه قرار گرفتنشون در اينجا صرفا بستگي به استقبال كاربران اينجا داره
    __________________________________________________________________________
    (آخرین ویرایش در این ارسال: ۱۳۸۸ خرداد ۲۵ ۰۳:۱۱ عصر، توسط phpveteran.)
    ۱۳۸۸ خرداد ۲۵ ۰۳:۱۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : scooter
    scooter آفلاین
    عضو مهم
    ****

    ارسال‌ها: 391
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 3
    تشکرها : 239
    ( 54 تشکر در 42 ارسال )
    ارسال: #10
    RE: CSRF Attacks
    شما به ما لطف میکنی اگه مقالات بیشتری بنویسی
    از جوابتون هم ممنون
    اما ما در هاست های اشتراکی به فایل پیکر بندی دسترسی نداریم. چی کار کنیم؟
    __________________________________________________________________________
    welcome to the club
    ۱۳۸۸ خرداد ۲۵ ۰۶:۰۱ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (2):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS