• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چک کردن عمر لاگین خودکار در سمت سرور
#1
فرضا ما برای لاگین خودکار کاربر یک کوکی با طول عمر خاص روی کلاینت ست کردیم.
مثلا کاربر موقع ورود تعیین کرده بوده که برای یک روز یا یک هفته لاگین بمونه.
خب اینجا دو مسئله هست.

یکی اینکه اگر ساعت/تاریخ سیستم کلاینت بهم خورده باشه/بخوره، اونوقت عمر این کوکی میتونه بیشتر یا کمتر بشه. البته بنظرم مشکل از نظر امنیتی فقط در بیشتر شدن عمر این کوکی است، که نباید اینطور باشه.

موضوع بعدی اینه که اگر (محتویات) کوکی لاگین کلاینت به هر نحوی سرقت بشه، اونوقت نفوذگر میتونه از اون برای دسترسی به اکانت کاربر به مدت زمانی که بالقوه میتونه نامحدود باشه استفاده کنه.

ولی اگر ما طول عمر محتویات کوکی رو یجوری در سمت سرور هم چک کنیم، اونوقت این دو مشکل امنیتی حل میشه.

پس بنظرتون این کار رو بکنیم؟
خوبه؟ Big Grin



البته یک مسئلهء کاربری/یوزرفرندلی هم ممکنه با این کار (چک کردن طول عمر کوکی لاگین در سمت سرور) ایجاد بشه، و اون اینکه فرضا اگر کاربر روی چند سیستم با تعیین زمانهای متفاوتی لاگین کرده بود، اونوقت اینها با هم تداخل میکنن، مگر اینکه در سمت سرور براش تمهید خاصی کرده باشیم.
البته بنظر من این مورد چندان مهم نیست و میشه نادیده هم گرفتش!
یعنی کلا لاگین بودن همزمان روی چند سیستم بنظر من زیاد مهم نیست و مسائل امنیتی و مشکلاتی در کل ایجاد میکنه (مثل این مورد، ولی نه فقط این) که اگر بخوایم برنامه رو با اونا تطبیق بدیم کار زیادی میبره و دردسر و حجم و پیچیدگی ایجاد میکنه که بنظرم ارزشش رو نداره.
  پاسخ
تشکر شده توسط : nimaee
#2
(۱۳۹۲ آذر ۳۰, ۱۱:۴۵ ق.ظ)vejmad نوشته: فرضا ما برای لاگین خودکار کاربر یک کوکی با طول عمر خاص روی کلاینت ست کردیم.
مثلا کاربر موقع ورود تعیین کرده بوده که برای یک روز یا یک هفته لاگین بمونه.
خب اینجا دو مسئله هست.

یکی اینکه اگر ساعت/تاریخ سیستم کلاینت بهم خورده باشه/بخوره، اونوقت عمر این کوکی میتونه بیشتر یا کمتر بشه. البته بنظرم مشکل از نظر امنیتی فقط در بیشتر شدن عمر این کوکی است، که نباید اینطور باشه.

موضوع بعدی اینه که اگر (محتویات) کوکی لاگین کلاینت به هر نحوی سرقت بشه، اونوقت نفوذگر میتونه از اون برای دسترسی به اکانت کاربر به مدت زمانی که بالقوه میتونه نامحدود باشه استفاده کنه.

ولی اگر ما طول عمر محتویات کوکی رو یجوری در سمت سرور هم چک کنیم، اونوقت این دو مشکل امنیتی حل میشه.

پس بنظرتون این کار رو بکنیم؟
خوبه؟ Big Grin



البته یک مسئلهء کاربری/یوزرفرندلی هم ممکنه با این کار (چک کردن طول عمر کوکی لاگین در سمت سرور) ایجاد بشه، و اون اینکه فرضا اگر کاربر روی چند سیستم با تعیین زمانهای متفاوتی لاگین کرده بود، اونوقت اینها با هم تداخل میکنن، مگر اینکه در سمت سرور براش تمهید خاصی کرده باشیم.
البته بنظر من این مورد چندان مهم نیست و میشه نادیده هم گرفتش!
یعنی کلا لاگین بودن همزمان روی چند سیستم بنظر من زیاد مهم نیست و مسائل امنیتی و مشکلاتی در کل ایجاد میکنه (مثل این مورد، ولی نه فقط این) که اگر بخوایم برنامه رو با اونا تطبیق بدیم کار زیادی میبره و دردسر و حجم و پیچیدگی ایجاد میکنه که بنظرم ارزشش رو نداره.


به نظر من که باید این کارو کرد وگرنه از نظر امنیتی به مشکل بر خواهیم خورد. بهترین راه استفاده از کوکی و چک کزدن مجدد در سمت سرور هست.
  پاسخ
تشکر شده توسط : vejmad
#3
به نظر من که کار خوبیه انجام بشه. البته همونطور که خودت می دونی خود php سشن های منقضی شده رو پاک می کنه. توی ذخیره سازی در داخل دیتابیس هم که میشه مستقیم روی فیلد طول عمر شرط گذاشت. البته میشه توی خود سشن هم مقدار عمر سشن رو ذخیره کرد و با خود php به صورت مستقیم چک کرد.
بحث دومی که برای یوزر فرندلی بودن هم داشتی اونم به نظر من راه حلش خیلی ساده هست. ما حداکثر طول عمر لاگین رو برای هر کاربر در نظر نمی گیریم برای هر سشن در نظر می گیریم.
  پاسخ
تشکر شده توسط : vejmad
#4
راستی من میخوام روی طول عمر کوکی هایی که تا مدت باز بودن مرورگر وجود دارن هم یه محدودیت و چک در سمت سرور بذارم.
چون این خیلی معنی نداره که چنین کوکی ای مثلا برای چند روز وجود داشته باشه. ریسک امنیتی هم ایجاد میکنه؛ یعنی مثلا ممکنه اون کوکی توسط یک هکر سرقت شده و داره بصورت نامحدود مورد استفاده قرار میگیره.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان