PDA

View Full Version : سشن و کوکی در جامعه های مجازی



olampiad
دوشنبه 20 مهر 1394, 00:54 صبح
سلام و خسته نباشید
من تا الآن تو همه ی پروژه هام از سشن استفاده میکردم ولی سشن طوری هستش که وقتی تو سایت ده دقه فعالیت نمیکنی از بین میره و به صفحه لاکین منتقل میشه.(همینطور هم که میدونیم میشه این وقت رو طولانی کرد)
سوالی که دارم اینه : تا چه حد میتونم این وقت رو طولانی کنم.
آیا میشه زمان سشن رو واسه یک ماه افزایش داد.

و سوال دیگه:
من تو چند جایی میخوندم که امنیت کوکی پایینه:
حالا
خواستم ببینم این شبکه های اجتماعی مثل فیسبوک و کلوپ و .... از چ روشی استفاده میکنن.
ممنون

ravand
دوشنبه 20 مهر 1394, 07:07 صبح
این نوشته حذف شد.

محسن شامحمدی
دوشنبه 20 مهر 1394, 08:25 صبح
زیاد کردن عمر سشن یک کار اشتباه هستش به هزارتا دلیل
برای اینکه بتونید کاربر رو به سادگی و بدون نمایش فرم لاگین احراز هویت کنید به سادگی می تونید از کوکی استفاده کنید که توش نام کاربری و هش پسورد بصورت کدشده موجود باشه.
اینکه امنیت کوکی پایینه یعنی چی؟
اگر کوکی کاربر رو کسی از رویی کامپیوترش بدزده خب مثل اینه که یوزرنیم پسوردش رو دزدیده.دزدی کوکی معمولا با جاوااسکریپت انجام می شه که اگر شما کوکی را به حالت Httponly (http://stackoverflow.com/questions/36877/how-do-you-set-up-use-httponly-cookies-in-php)ذخیره کنید.اصلا جاوااسکریپت نمی تونه بهش دسترسی داشته باشه.
اگر شما هش پسورد رو ذخیره کنی.حتی کسی اگر کوکی کاربر رو بدزده.بازم نمی تونه متوجه بشه که پسورد کاربر چی بوده.فقط اجازه لاگین رو تا پایان عمر کوکی یا زمان تغییر رمز عبور توسط کاربر داره.
ضمنا می تونید کوکی رو بصورت یوزر نیم/جداکننده/پسورد توی کوکی ذخیره کنید که خوندن وتفسیرش برای دزد کوکی غیرممکن بشه

نکته: کوکی های هر سایت با هر Request به اون سایت بهش ارسال می شن.پس اگر کسی توی شبکه کاربر Sniffer قرار بده می تونه کوکی شو بدزده.تنها راه حل برای این قضیه استفاده از SSL هستش.

djtrex
دوشنبه 20 مهر 1394, 11:15 صبح
زیاد کردن عمر سشن یک کار اشتباه هستش به هزارتا دلیل
برای اینکه بتونید کاربر رو به سادگی و بدون نمایش فرم لاگین احراز هویت کنید به سادگی می تونید از کوکی استفاده کنید که توش نام کاربری و هش پسورد بصورت کدشده موجود باشه.
اینکه امنیت کوکی پایینه یعنی چی؟
اگر کوکی کاربر رو کسی از رویی کامپیوترش بدزده خب مثل اینه که یوزرنیم پسوردش رو دزدیده.دزدی کوکی معمولا با جاوااسکریپت انجام می شه که اگر شما کوکی را به حالت Httponly (http://stackoverflow.com/questions/36877/how-do-you-set-up-use-httponly-cookies-in-php)ذخیره کنید.اصلا جاوااسکریپت نمی تونه بهش دسترسی داشته باشه.
اگر شما هش پسورد رو ذخیره کنی.حتی کسی اگر کوکی کاربر رو بدزده.بازم نمی تونه متوجه بشه که پسورد کاربر چی بوده.فقط اجازه لاگین رو تا پایان عمر کوکی یا زمان تغییر رمز عبور توسط کاربر داره.
ضمنا می تونید کوکی رو بصورت یوزر نیم/جداکننده/پسورد توی کوکی ذخیره کنید که خوندن وتفسیرش برای دزد کوکی غیرممکن بشه

نکته: کوکی های هر سایت با هر Request به اون سایت بهش ارسال می شن.پس اگر کسی توی شبکه کاربر Sniffer قرار بده می تونه کوکی شو بدزده.تنها راه حل برای این قضیه استفاده از SSL هستش.


ذخیره کردن پسورد در کوکی حتی هش شده و حتی با salt باز هم توصیه نمیشه (خصوصا اگه md5 باشه که ابدا پیشنهاد نمیشه!!)
http://security.stackexchange.com/questions/9455/is-it-safe-to-store-the-password-hash-in-a-cookie-and-use-it-for-remember-me-l
http://stackoverflow.com/questions/2360861/is-it-advisable-to-store-a-hashed-password-in-a-cookie
http://stackoverflow.com/questions/11402409/hashed-passwords-in-cookies

نیاز نیست حتما از $_SESSION استفاده کنید می تونید از دیتابیس/ فایل/redis/memcached و ... هم برای سشن استفاده کنید:

نسخه php5.4 این اینترفیس معرفی شده:
http://php.net/manual/en/class.sessionhandlerinterface.php

برای اینکه برای پیاده سازی های مختلف مثل دیتابیس از یک api استفاده کنند.
اینجا گام به گام برای دیتابیس توضیح داده شده:
http://culttt.com/2013/02/04/how-to-save-php-sessions-to-a-database/

پکیج های مختلفی هم برای سشن قبلا ساخته شده می تونید از اونها استفاده کنید:
https://github.com/phpgearbox/session
http://symfony.com/doc/current/components/http_foundation/sessions.html
https://github.com/auraphp/Aura.Session
و ...

می تونید نحوه مدیریت سشن ها رو هم توی فریم ورک ها و یا cms های مختلف ببینید.