25-03-1394، 06:12 ب.ظ
(آخرین تغییر در ارسال: 25-03-1394، 06:13 ب.ظ توسط n0o0b_sina.)
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
دوستان csrf چه کاربردی داره؟
یکی از کاربرد هاش اگه اشتباه نکنم اینه:
جلوگیری از دسترسی فرم های ajax از خارج آن
---
و یه مورد دیگ اینکه فرض کنیم توی یه فرم از csrf استفاده کردیم؛ چون ما از sessions برای ایجاد csrf استفاده میکنیم، کاربر میاد صفحه ی فرم رو باز میکنه و حالا 15 دقیقه یا بیشتر صفحه رو باز نگه میداره بعد از 15 دقیقه که میخواد بیاد فرم رو ارسال کنه با پیام خطا مواجه میشه. خب این بد نیست؟
---
توی yii من دقت که کردم csrf رو توی meta گذاشته خب این چه کاربردی داره؟ چرا این کارو کرده؟ در این باره هم توضیح بدید ممنون میشم
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
البته CSRF که خودش حمله است. اون چیزی که مدنظر شماست فکر کنم CSRF Protection باشه که راههای مختلفی داره و یکی از راههای معمولش قراردادن یک عنصر با مقدار تصادفی توی فرم و نگه داشتنش سمت سرور توی سشن هست. برای مواردی هم که گفتین (غیرفعال شدن سشن بعد از 15 دقیقه و...) هم راه حل وجود داره. یکیش تنظیم عمر سشن به مدت بیشتره و یکی دیگه اینکه پشت پرده هر چند دقیقه یکبار یه درخواست با AJAX به سرور بفرستیم (این درخواست هیچ کاری نمیکنه و فقط میخوایم به سرور بگیم که کلاینت زنده است).
اطلاعاتی هم که توی تگ متا گذاشته میشه برای سرور توی هدر درخواست ارسال میشه و Yii از اونجا توکن CSRF خودش رو میخونه.
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
چطوری اطلاعات meta فرستاده میشن با header? برا من که نیومد
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
اگه توی صفحه شما نه لینکی باشه که CSRF بهش اضافه بشه نه فرمی که داخلش توکن رو بگذاره، به متا اضافه میکنه. البته منم جایی خوندم و خودم تست نکردم و ندیدم اضافه بشه.
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
توی فرم پیش فرض yii (تماس با ما) csrf رو هم توی متا گذاشته هم توی hidden input، چرا؟! گذاشتنش تو متا چه فایده ای داره؟ اینو من متوجه نشدم چون اطلاعات متا رو نمیشه دریافت کرد
27-03-1394، 12:45 ق.ظ
(آخرین تغییر در ارسال: 27-03-1394، 12:48 ق.ظ توسط n0o0b_sina.)
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
خب درست با جاوا اسکریپت میشه این کارو کرد ولی یه مورده دیگ ای هم هستش، خب اسپمر با همون جاوا اسکریپت هم میتونه اسپم کنه یا حتی با php هم خیلی راحت میشه اسپم کرد خیلی راحت محتویات csrf خونده میشه، پس این csrf به چه دردی میخوره؟
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
بعد یه سوال دیگ که توش شک دارم، با فعالیت کاربر توی سایت session های خوده php یا کوکی ها غیر فعال نمیشن؟
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
این توکن هربار عوض میشه.
درمورد سؤالتون هم متوجه منظورتون نشدم. کلاً فعالیت کاربر نیازمند سشن هست. سشن هم برای کارکرد صحیح به کوکی احتیاج داره در حالت پیشفرض. حالا چطور ممکنه فعالیت کاربر بخواد سشنها و... رو بهم بریزه، نمیدونم.
27-03-1394، 01:23 ق.ظ
(آخرین تغییر در ارسال: 27-03-1394، 01:30 ق.ظ توسط n0o0b_sina.)
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
خب مام هربار که میخوایم اسپم کنیم این توکن رو بدست میاریم طبیعتا!!!
واسه session خوده php هم من تست کردم اگه 0 باشه تا زمانی که مرورگر بسته نشده باقی میمونه در غیر این صورت کاربر چه توی سایت باشه چه خارجش session از بین میره مگه اینکه خودمون دستی setcookie کنیم.
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
شما هرجوری کار کنید، بهرحال باید توکن رو توی صفحه بگذارین تا توسط صفحه ارسال بشه. مهم اینه که با این کار، اولاً جلوی ارسال فرم توسط سایتهای دیگه گرفته میشه و ثانیاً اگه بخوان Bruteforce حمله کنن، باید برای هر دفعه دوبار درخواست بدن. یکبار صفحه رو بگیرن و بخونن و کد رو استخراج کنن (که خودش پردازش لازم داره) و یکبار دیگه هم برای اینکه مقادیر خودشون رو سابمیت کنن. هدف CSRF Protection حذف کامل امکان ارسال نیست چون اصلاً امنیت صددرصد معنا نداره بلکه هدفش سخت کردن و لزوم مشاهده سایت هست. حداقل اینطوری 2 مزیت دارین: یکی اینکه آمار سایتتون هم بالا میره چون ویزیت محسوب میشه و یکی دیگه اینکه اطلاعات Agent و IP و... ویزیتورها (شامل نفوذگر) رو میتونید لاگ کنید و داشته باشین تا درصورت نیاز به کمک فایروال مسدودش کنید.
یکی دیگه از راههای امنیت CAPTCHA هست که زیاد توصیه نمیشه چون سادگی توکن رو نداره و کاربر هم اذیت میشه اگه بخواد هر کاری انجام بده، کد امنیتی نشونش بدیم ولی بسته به میزان اهمیت و امنیت سایتتون، ممکنه توی بعضی سناریوها لازم باشه طرف آب هم میخوره، کد امنیتی رو بگه.
ارسالها: 144
موضوعها: 13
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 51
31 بار تشکر شده در 28 پست
درسته csrf کارو یکم سخت تر میکنه، ممنون
ارسالها: 76
موضوعها: 0
تاریخ عضویت: اردیبهشت 1394
اعتبار:
1
تشکرها: 0
41 بار تشکر شده در 35 پست
نگاه کنید تصور غلطی نداشته باشید از CSRF یا Cross-Site Request Forgery
حمله csrf برای زمانی است که کاربر شما وارد سیستم شده و مراحل احراز حویت را پشت سر گذاشته و همچنین برای همه موارد مورد نظر ما نیست.
مثلا کاربر A وارد سیستم می شود.
در صورتی که به آدرس example.com/?action=delpost&id=2 برود پست شماره 2 حذف خواهد شد. حال در هر صورتی من کاربر A را به این ادرس هدایت کنم با شناسه دیگر چه اتفاقی رخ می دهد ؟
قطعا پست کاربر حذف خواهد شد. این میتونه همه موارد را شامل بشود!
حال اگر من یک برای انجام عملیات حذف پست یک توکن تصادفی (یک رمز تصادفی) بخواهم دیگر کسی از این توکن با خبر نخواهد بود و در صورت ارسال کاربر A به آدرس example.com/?action=delpost&id=2 با خطای توکن امنیتی اشتباه است مواجه خواهم شد.