PDA

View Full Version : سوال: جلوگیری از حمله CSRF و مشکل در باز شدن چند صفحه (چند Tab)



Jason.Bourne
جمعه 10 خرداد 1392, 00:10 صبح
من برای جلوگیری از حمله CSRF درون صفحه یک Token قرار می دهم و هنگام Submit فرم، Token را با متغیری که در Session رجیستر شده مقایسه میکنم.
اما مشکل من این هست که اگر یک کاربر بطور همزمان صفحه مورد نظر را در 2 تب جداگانه باز نماید، فقط Token صفحه آخر معتبر می باشد.
برای رفع این مشکل برای هر صفحه یک Token با کلید و مقدار منحصربفرد ایجاد می کنم که هر صفحه Token خودش را داشته باشد.
اما مشکل اینجا هست که خیلی سریع تعداد Token های استفاده نشده در Session زیاد خواهد شد.
برای رفع این مشکل برای هر Token یک Expire تایم قرار دادم که هنگام بررسی صحت Token، ،Token هایی که Expire شده اند حذف می گردد.

آیا راه بهتری برای انجام این کار وجود دارد؟

eshpilen
جمعه 10 خرداد 1392, 08:01 صبح
برای تمام فرمهای سشن یک کاربر خاص، از یک توکن استفاده کن.
از نظر امنیتی استفاده از چند توکن کمی بهتره، ولی به دردسرهاش نمی ارزه.
در همون حد پایه که انجام بدی کافیه.
بیشترش دیگه وسواسی بنظر میاد.
این حرفا رو هم فقط از خودم نمیگم، بلکه در چند منبعی هم خونده بودم.

Jason.Bourne
جمعه 10 خرداد 1392, 12:36 عصر
برای تمام فرمهای سشن یک کاربر خاص، از یک توکن استفاده کن.
از نظر امنیتی استفاده از چند توکن کمی بهتره، ولی به دردسرهاش نمی ارزه.
در همون حد پایه که انجام بدی کافیه.
بیشترش دیگه وسواسی بنظر میاد.
این حرفا رو هم فقط از خودم نمیگم، بلکه در چند منبعی هم خونده بودم.

یعنی برای کاربری که Login کرده، یک token ایجاد کنم و از همین Token در تمام قسمت ها استفاده کنم؟!
یعنی دیگر نیازی به Generate کردن مداوم و تغییر Token نیست؟!

eshpilen
جمعه 10 خرداد 1392, 12:55 عصر
بله میتونید تنها یک توکن برای هر جلسهء کاربر ایجاد کنید. منظورم تا زمانیکه مرورگر کاربر بازه.
برای برنامه های عادی بنظر بنده بیش از این وسواسه. چون هم دردسرهای فنی/برنامه نویسی داره و هم برای کاربر میتونه مشکل ایجاد کنه (User experience).
اساس و عمدهء امنیت رو همون تک توکن هم ایجاد میکنه.

Jason.Bourne
جمعه 10 خرداد 1392, 13:40 عصر
با این اوصاف از همین یک Token استفاده می کنم. اما کنجکاو شدم که چطور میشه همچین سیستمی را پیاده سازی کرد؟ (برای هر صفحه یک Token مجزا)