ورود

View Full Version : سوال: نگهداری وضعیت login



dr_csharp
دوشنبه 20 خرداد 1387, 12:01 عصر
سلام
سایت هایی که تعداد کاربر زیادی دارند ، از چه روشی برای نگهداری اطلاعات کاربران login کرده بین صفحات مختلف استفاده میکنند ؟
مثلا Yahoo تعداد n کاربر داره که همزمان به سرور login کردن . مسلما پس از ورود به صفحه مورد نظر ، با درخواست هر Page جدید توسط کاربر ،مجددا بروشی باید از Authenticated بودن کاربر مطمئن شد.

Behrouz_Rad
دوشنبه 20 خرداد 1387, 12:24 عصر
آره. کوکی.

dr_csharp
دوشنبه 20 خرداد 1387, 12:45 عصر
آره. کوکی.
اونوقت این کوکی حاوی چه اطلاعاتیه ؟
مثلا فقط به یه کوکی بنام loged با مقدار 0 یا 1 ( برای درک اینکه کاربر از قبل login کرده یا نه )، بسنده میکنن یا قصه دیگه ای داره ؟

Behrouz_Rad
دوشنبه 20 خرداد 1387, 12:59 عصر
بستگی به معماری سایت داره. هر چیزی می تونه توش باشه. حتی می تونه خالی باشه! مهم اینه که وجود داشته باشه.

dr_csharp
دوشنبه 20 خرداد 1387, 14:48 عصر
بستگی به معماری سایت داره. هر چیزی می تونه توش باشه. حتی می تونه خالی باشه! مهم اینه که وجود داشته باشه.
1-بنظر من نمیتونه خالی باشه ،چون اگه خالی باشه چطور میتونه بین کاربر A و B تفاوت قائل بشه !؟
2-چیزی که الان مشخصه :کاربر برای بار اول با بررسی مشخصات از DataBase شناسایی میشه و در صورت احراز صلاحیت یک cookie ساخته میشه ؟
3-سیستم در دفعات بعد چطور متوجه میشه کاربر قبلا authenticate شده و حالا باید فقط cookie چک بشه ؟(اگر اینطوری باشه که اگر cookie وجود داشت دیگه authenticate لازم نیست => امکان مشابه سازی cookie وجود داره)

Amir Taghavi
دوشنبه 20 خرداد 1387, 15:17 عصر
بنظر من نمیتونه خالی باشه ،چون اگه خالی باشه چطور میتونه بین کاربر A و B تفاوت قائل بشه !؟

خوب می تونه از اسمش (البته ENC شده) استفاده کنه حتما لازم نیست که کوکی مقداری داشته باشه

mohsen_zelzela00
دوشنبه 20 خرداد 1387, 15:37 عصر
خوب می تونه از اسمش (البته ENC شده) استفاده کنه حتما لازم نیست که کوکی مقداری داشته باشه
میشه بیشتر توضیح بدید

dr_csharp
دوشنبه 20 خرداد 1387, 16:04 عصر
خوب می تونه از اسمش (البته ENC شده) استفاده کنه حتما لازم نیست که کوکی مقداری داشته باشه

بالاخره این اسم ENC شده باید با یه چیزی مقایسه بشه وگرنه کاربردی نداره !

Behrouz_Rad
دوشنبه 20 خرداد 1387, 18:40 عصر
1-بنظر من نمیتونه خالی باشه ،چون اگه خالی باشه چطور میتونه بین کاربر A و B تفاوت قائل بشه !؟

البته نظر شما محترمه اما حق با منه! :)
وقتی که درخواستی از جانب شما به سرور ارسال میشه، مجموعه ای از کوکی های مرتبط با سایت هم ارسال میشن. اینکه در اون کوکی چی نوشته شده مهم نیست. مهم اینه که کوکی "وجود" داره. همین کفایت می کنه.
البته جوابی که در پست 6 داده شده صحیح هست. معمولا کوکی شامل نام کاربری و سطح دسترسی کاربر هست.


2-چیزی که الان مشخصه :کاربر برای بار اول با بررسی مشخصات از DataBase شناسایی میشه و در صورت احراز صلاحیت یک cookie ساخته میشه ؟

بله.


3-سیستم در دفعات بعد چطور متوجه میشه کاربر قبلا authenticate شده و حالا باید فقط cookie چک بشه ؟(اگر اینطوری باشه که اگر cookie وجود داشت دیگه authenticate لازم نیست => امکان مشابه سازی cookie وجود داره)

در قسمت 1 توضیح دادم.

موفق باشید.

barnamejoo
دوشنبه 20 خرداد 1387, 18:45 عصر
میتونه شامل username باشه + fieldی از دیتابیس برای ایمنی بیشتر... مثلا یک hash که فقط مختص به یک کاربره... بعد در شروع هر صفحه این دو تا چک بشه و غیره...

dr_csharp
سه شنبه 21 خرداد 1387, 10:04 صبح
میتونه شامل username باشه + fieldی از دیتابیس برای ایمنی بیشتر... مثلا یک hash که فقط مختص به یک کاربره... بعد در شروع هر صفحه این دو تا چک بشه و غیره...
اینطور که شما میگین ، یعنی با هر بار درخواست صفحه ی جدید یکبار به DB رجوع میشه و در حالت n کاربر همزمان بار سنگینی میشه !؟

Behrouz_Rad
سه شنبه 21 خرداد 1387, 10:10 صبح
اینطور که شما میگین ، یعنی با هر بار درخواست صفحه ی جدید یکبار به DB رجوع میشه و در حالت n کاربر همزمان بار سنگینی میشه !؟

نیاز به مراجعه به دیتابیس نیست. عرض کردم که وجود کوکی کفایت می کنه. وقتی کوکی وجود داره یعنی شما قبلا تصدیق هویت شدی پس نیازی به لوگین مجدد نداری.
روال Authenticate_Request این مورد رو چک می کنه. ساده ست.

dr_csharp
سه شنبه 21 خرداد 1387, 10:56 صبح
نیاز به مراجعه به دیتابیس نیست. عرض کردم که وجود کوکی کفایت می کنه. وقتی کوکی وجود داره یعنی شما قبلا تصدیق هویت شدی پس نیازی به لوگین مجدد نداری.
روال Authenticate_Request این مورد رو چک می کنه. ساده ست.
1-پس با هربار درخواست صفحه جدید ابتدا کوکی بررسی میشه ؟
2-اگه من کوکی جدید و تو یه سیستم دیگه کپی کنم ،بازهم توسط اون سرور(چون کوکی رو دارم) بعنوان یک کاربر Authenticate شده با من رفتار میشه ؟

Behrouz_Rad
سه شنبه 21 خرداد 1387, 11:36 صبح
1-پس با هربار درخواست صفحه جدید ابتدا کوکی بررسی میشه ؟

بله.


2-اگه من کوکی جدید و تو یه سیستم دیگه کپی کنم ،بازهم توسط اون سرور(چون کوکی رو دارم) بعنوان یک کاربر Authenticate شده با من رفتار میشه ؟

به XSS خوش آمدی! بله....

dr_csharp
سه شنبه 21 خرداد 1387, 11:52 صبح
1-چیکار کنیم XSS اتفاق نیفته ؟
2- Authenticate_Request چه وقتی اتفاق می افته و آیا اگه کاربر یکبار برای بار اول Authenticate بشه و ما Cookie مورد نظر و بسازیم ؛ برای دفعات بعد کافیه در این رویداد با استفاده از HttpCookie اطلاعات رو بخونیم ؟

Behrouz_Rad
سه شنبه 21 خرداد 1387, 12:57 عصر
1-چیکار کنیم XSS اتفاق نیفته ؟

به مقاله ی امنیت در ASP.NET که اعلان هست رجوع کن.


2- Authenticate_Request چه وقتی اتفاق می افته

وقتی که برای دسترسی به منبعی نیاز به تصدیق هویت هست.


و آیا اگه کاربر یکبار برای بار اول Authenticate بشه و ما Cookie مورد نظر و بسازیم ؛ برای دفعات بعد کافیه در این رویداد با استفاده از HttpCookie اطلاعات رو بخونیم ؟

بله. برای ایجاد یک زمینه ی امنیتی (Security Context) برای درخواست جاری.

موفق باشید.

dr_csharp
سه شنبه 21 خرداد 1387, 13:03 عصر
درمورد Authenticate_Request فرمودین :


وقتی که برای دسترسی به منبعی نیاز به تصدیق هویت هست.
.
این نیازمندی چطور اعلان میشه،یعنی چطور و کجا !؟

Behrouz_Rad
سه شنبه 21 خرداد 1387, 13:26 عصر
با تگ location در Web.Config می تونی مشخص کنی.

dr_csharp
سه شنبه 21 خرداد 1387, 13:37 عصر
با تگ location در Web.Config می تونی مشخص کنی
من هنوز دقیق متوجه نشدم.
متاسفانه google هم نتیجه خوبی برای Authenticate_Request نشون نداد تا لااقل بابررسی یه sample رفع ایراد بشه !ممنون میشم من و به سمت یک sample واقعی راهنمایی کنید .

Behrouz_Rad
سه شنبه 21 خرداد 1387, 16:26 عصر
من معمولا Sample به کسی نمیدم. توضیحاتم به اندازه ی کافی واضح بود. بقیش دست شماست.

موفق باشید.

barnamejoo
سه شنبه 21 خرداد 1387, 16:37 عصر
اینطور که شما میگین ، یعنی با هر بار درخواست صفحه ی جدید یکبار به DB رجوع میشه و در حالت n کاربر همزمان بار سنگینی میشه !؟بله سنگین هست! برای همین هم هر سایتی بسته به ترافیکش ، سرورش رو انتخاب میکنه.

نیاز به مراجعه به دیتابیس نیست. عرض کردم که وجود کوکی کفایت می کنه. وقتی کوکی وجود داره یعنی شما قبلا تصدیق هویت شدی پس نیازی به لوگین مجدد نداری.
من موافق این گفته نیستم... درسته که از لحاظ تئوری رجوع به دیتابیس لازم نیست ولی در عمل بسته به اطلاعاتی که برای کاربر ثبت شده باید نشون داده بشه، مجبور میشید به دیتابیس رجوع کنید! مگر اینکه تنها استفاده شما از کوکی نشون دادن یک پیغام "شما وارد حساب شدید!" یا نام کاربری باشه!!