PDA

View Full Version : تعیین حد مجازی برای تکرار وارد کردن پسورد



musiox
جمعه 04 خرداد 1386, 22:47 عصر
یکی دیگه از بحث های امنیتی در سیستم های تحت وبی که محدوده کاربری دارن و از سیستم لاگین استفاده میکنن ، تعیین حد مجازی برای اشتباه وارد کردن پسورد در این سیستم هاست که اگر کاربر از این حد مجاز خارج بشه دسترسیش برای مدتی به سیستم لاگین قطع میشه و طبیعتا نمی تونه وارد سیستم بشه و یا تلاش دوباره ای رو برای لاگین داشته باشه .
خوشحال میشم در مورد این مسئله مهم از راهکارها و نظرات شما مطلع بشم .
برای داشتن بحثی که جهت دار باشه و چارچوب خاصی داشته باشه بهتره به مسائل زیر بپردازیم :
1 . اساسا این روش برای چه منظوری استفاده میشه ؟
2 . چه تکنیک هایی برای این کار وجود داره ؟
3 . بررسی مزایا و معایب این تکنیکها

خوشحال میشم که تو این بحث شرکت کنین تا از این بحث یه نتیجه ای بگیریم .

cybercoder
شنبه 05 خرداد 1386, 11:33 صبح
Validation Form رو در PHP جستجو کنید.

یکی از روش ها اینه که از روی سرعت و نوع تایپ کاربر تعیین میشه که آیا همون شخص داره Login می کنه یا نه
روش های زیادی در مسائل امنیتی وجود داره مثل FingerScan هستش که امروزه مورد استفاده قرار می گیره.EyeScan هم که در فرودگاه ها شروع به استفاده شده. این بحث امنیت لاینتهیست و به نظر من بهتر بود شما این بحث رو در بخشی که مربوط به امنیته مطرح می کردید.
موفق باشید.

musiox
شنبه 05 خرداد 1386, 13:03 عصر
ولی من در مورد امنیت سایت صحبت می کنما . شما توی همین سایت چند بار سعی کن با آیدی خودت و یه پسورد اشتباه به سایت وارد بشی اون وقت متوجه منظورم از این بحث میشی .

armin390
شنبه 05 خرداد 1386, 17:58 عصر
1 . اساسا این روش برای چه منظوری استفاده میشه ؟برای جلوگیری از دستیابی فرد متخاصم!! به پسورد کاربری از طریق حملات Brute force, Dictionary (به زبون ساده آزمون و خطای خودمون)


2 . چه تکنیک هایی برای این کار وجود داره ؟اول راهی برای شناسایی کاربران مختلف از هم (معمولاً از طریق کوکی های اختصاص داده شده به کاربر مثل کوکی حامل session id و یا ترکیب ip و user agent کاربر و ...) و سپس ثبت تعداد تلاش های ناموفق کاربر برای لاگین کردن و در صورتی که تعداد از حد مجاز رد شد عدم پذیرش درخواست لاگین


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

musiox
شنبه 05 خرداد 1386, 18:56 عصر
ممنون . خب ما هم اینجاییم بحث کنیم دیگه.
کوکی قابل اعتماد نیست ، چون میشه جلوشو گرفت پس نمی تونه گزینه قابل اعتمادی باشه .
پس گزینه های جایگزینی هم باید باشه .

ealvandi
شنبه 05 خرداد 1386, 19:13 عصر
پس گزینه های جایگزینی هم باید باشه


خوب راه ساده دیگش اینه که در همون ابتدا برای ورود کاربر یک شمارنده در یک table داشته باشی و به ازای هر بار سعی ناموفق کاربر به شمارنده یک واحد اضافه کنی. و هرموقع مقدار شمارنده به مقدار مورد نظر شما رسید اونوقت ....

musiox
شنبه 05 خرداد 1386, 21:59 عصر
من از صحبت شما این برداشت رو کردم :
شما میگین که یه مدت زمانی ( T ) تعیین بشه اگه از زمان آخرین تلاش کاربر ( TLastAttempt ) برای لاگین تا الان که تلاش جدید کاربره ( TNow ) به اندازه این زمان تعیین شده گذشته بود ( TNow - TLastAttempt >= T ) شمارنده کاربر ریست می شه و کاربر می تونه که فرم لاگین رو ببینه و اگه هربار که کاربر پسورد رو اشتباه وارد کنه از شمارنده یکی کم میشه .
خب اگه منظور شما اینه ، به نظر من یه مشکل اساسی داره اگه این تکنیک بر اساس یوزرنیم باشه خودش یه مشکل امنیتی ایجاد می کنه چون باعث میشه یه فرد متخاصم!! براحتی بتونه که یه آیدی رو قفل کنه . برای این کار کافیه که چند بار با یوزرنیم کاربر مورد نظر , پسورد اشتباه وارد کنه ولی باید دید بوسیله کدام شناسه از کاربر می توان این تکنیک رو پیاده کرد که این مشکل رخ ندهد .

ealvandi
شنبه 05 خرداد 1386, 22:13 عصر
باعث میشه یه فرد متخاصم!! براحتی بتونه که یه آیدی رو قفل کنه


از طرفی هم هدف ما همینه که مچ فرد متخاصم رو بگیریم. و ضمنان استفاده از دیگر خصیصه ها اطمینان زیادی رو نخواهد داشت.

tabib_m
یک شنبه 06 خرداد 1386, 16:44 عصر
چون باعث میشه یه فرد متخاصم!! براحتی بتونه که یه آیدی رو قفل کنه .
قرار نیست که ما بیایم بر اساس نام کاربری طرف ، جلوی فرد رو بگیریم.
با سشن هم میشه این کار رو کرد. یعنی شما وقتی طرف میات توی سایت ، در صورتی که سشن ثبت نشده ، یه سشن ثبت کن ، با یک مقدار غیر تکراری ، و بعد اون رو بریز توی دیتابیس ، و در غیر این صورت (سشن ثبت شده بوده) یعنی طرف بیش از یک بار به این صفحه مراجعه کرده ، خوب کافیه تعداد مراجعه رو توی یک جدول بریزی و بعد هم محاسبه و ...

موفق باشید.

armin390
یک شنبه 06 خرداد 1386, 17:42 عصر
میشه لایه بندی کرد!!
(به طور کلی باید یک نظارت بر ip درخواست دهنده باشه)
اگه شناسایی هر سیستم رو با ip و شناسایی هر کلاینت رو با ip+user agent انجام بدیم:
در پایین ترین لایه هر سیستم میتونه در مدت زمان T0 فقط N0 درخواست لاگین داشته باشه
در لایه بالایی هر سیستم میتونه در مدت زمان T2 فقط N2 درخواست لاگین برای هر کاربر عضو داشته باشه
در لایه بالایی هر کلاینت میتونه در مدت زمان T1 فقط N1 درخواست لاگین داشته باشه
در لایه بالایی هر کلاینت میتونه در مدت زمان T3 فقط N3 درخواست لاگین برای هر کاربر عضو داشته باشه
...
X3<X2<X1<x0
میشه فقط یک لایه رو اعمال کرد و یا بعضی یا همه رو!!
استفاده session id (چه از طریق کوکی چه url) میتونه به عنوان یک ابزار شناسایی استفاده شه ولی به راحتی قابل دور زدنه...

پ.ن: استفاده از CAPTCHA (http://en.wikipedia.org/wiki/Captcha) مناسب میتونه در کنار این محدودیت استفاده شه تا امکان اینکه درخواست دهنده ماشین باشه رو کاهش داد...

musiox
یک شنبه 06 خرداد 1386, 19:43 عصر
بله captcha ( تصاویر امنیتی ) برای جلوگیری از حمله های ماشینی بسیار مناسبه . فکر نکنم که کاربری هم پیدا بشه که بخواد دستی آزمون و خطای بدست آوردن پسورد رو انجام بده و اینکه ip هم زیاد قابل اعتماد نیست چون اونم می تونه دور زده بشه .

musiox
پنج شنبه 10 خرداد 1386, 15:42 عصر
کسی حرف دیگه ای واسه گفتن نداره ؟

angel_boy013
جمعه 11 خرداد 1386, 16:45 عصر
ببخشین که فضولی میکنم اما اینم یک نظره
میشه یک session یا کوکی درست کرد که هر دفعه که غلط بزنه یک مقدار بهش اضافه بشه و مثلاً اگر مقدار از 0 به 5 رسید اون وقت یا یک تصاویر امنیتی بزنه یا ip بن کنه یا تا 5 دقیقه که برای حذف کوکی مثلاً وقت گذاشتیم از بعد اون 5 با زدن بزنه یک شما تا ... دقیقه نمیتونید وارد بشین

musiox
شنبه 12 خرداد 1386, 07:42 صبح
چرا فضولی . شما نظرتون درسته . همه مولفه ها رو اگه با هم و در کنار هم بگیریم شاید بتونیم یه راه حل داشته باشیم . در واقعه من حالا که ریز تر می بینم , متوجه این نکته میشم که زیاد هم نباید به مولفه های خود php زیاد تکیه کرد . به طور مثال :
HTTP_REFERER اگه استفاده کنیم , برای اینکه از داخل سایت اجازه ورود بدیم , می بینیم که بعضی از براوزر ها قابلیت تنظیم اینو دارن .
ip اینم که همه می دونن براحتی قابله دور زدنه وگرنه فیلتر شکن وجود نداشت که ...
session اینم که راحت جلوشو میشه گرفت که از طریق کوکی ارسال نشه و اگرم تو آدرس نشون داده بشه هم که خودش یه مشکل امنیتی دیگه واسه سایته .
.
.
و اینم ماجرای ما تو php .

armin390
شنبه 12 خرداد 1386, 09:57 صبح
هر راه حلی اگه درست پیاده نشه خب نباید جواب بده....
این موضوع به php ربطی نداره که شما می خواین واسه لاگین کردن کاربراتون محدودیت بذارین یا نه!!

در ضمن این موضوع (محدود کردن تعداد درخواست لاگین) کاملاً عملی و قابل پیاده سازیه...

musiox
شنبه 12 خرداد 1386, 13:14 عصر
منم می دونم ربطی به php نداره این مشکل از ساختار اینترنته که stateless هستش . منم اون چیزای که گفتم ربطی به php ندارن . شما بگو کدومشون به php ربط داره . اینم دارم میبینم که به راحتی قابل پیاده سازیه . خودمم گفتم که همه این مولفه ها با هم می تونه [ شاید بتونه ] مشکل امنیت رو حل کنه ولی باید قبول کرد که امنیت تو پروژه های بزرگ چیزی نیست که تنها یه لاگین ساده باشه . بلکه با یه لاگین شروع میشه .
در ضمن چرا به شما برمی خوره وقتی که php یه چی میگم .