# زبان های اسکریپتی > PHP > سوال: قفل شدن اکانت پس از چندین بار اشتباه وارد کردن رمز عبور؟

## sherlock0111

سلام دوستان گرامی
می خوام صفحه ی لاگین من این امکان رو داشته باشه که پس از چند بار اشتباه وارد کردن رمز به مدت معینی بسته بشه و کاربر نتونه حتی با وارد کردن رمز درست هم وارد کنترل پنل بشه؟
لطفا راهنمایی بفرمایید!

----------


## id1385

سلام
شما کد صفحه لاگین رو حداقل بزار اینجا تا بشه بهتر راهنمایی کرد.
(به صورت ساده) تعداد اشتباهات رو در یک سشن و زمان دسترسی غیرمجاز را دریک شسن دیگر ذخیره کن، تا موقعی که زمان دسترسی غیر مجاز کوچکتر از زمان بررسی اطلاعات نشده اصلاً نیاز به بررسی اطلاعات نداری و مستقیماً قفل بودن صفحه به مدت ... رو اعلام کن، اگه تعداد اشتباهات به تعداد دلخواهت رسید اونوقت سشن زمان دسترسی غیر مجاز رو مقدار دهی کن.

موفق باشید.

----------


## masiha68

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

----------


## eshpilen

سشن و کوکی هردوشون توسط کلاینت قابل حذف هستن، بنابراین استفاده ازشون به این شکل در این کاربرد اشتباهه.

----------


## id1385

با سلام
با فرمایشات دوستمون آقای *masiha68*   کاملاً موافقم، اینکه سشن و کوکی غیرقابل اعتماد هستن منطقیه، ولی توجه داشته باشید همونطور که عرض کردن این روش صرفاً یک روش مبتدی و ساده است.
وگرنه در برنامه هایی که امنیت اهمیت بالایی دارد مطئناً باید از دیتابیس کمک گرفت، هرچند پیشنهاد بنده در این مورد نیز استفاده از دیتابیس است، قبلاً در این مورد در پستهای بنده آموزش استفاده از سشن ها در دیتابیس وجود دارد.

موفق باشید

----------


## MMSHFE

بهتره کمی رعایت حال کاربران رو هم بکنید. برای مثال شاید کاربر بنده خدا واقعاً رمزش یادش رفته یا یکی که باهاش خصومت داره و شناسه کاربریش رو میدونه، عمداً چند بار رمز رو اشتباه وارد کنه تا اکانتش قفل بشه. اینجور مواقع بهتره ضمن قفل کردن اکانت، یک لینک تغییر رمز به ایمیلی که موقع ثبت نام داده، بفرستین و بهش بگین که اکانتتون قفل شده و درصورت تمایل برای بازکردنش، باید وارد ایمیلتون بشین و رمز جدید بگذارین. اینطوری اگه ایمیلش هم اشتباه وارد شده باشه یا هک شده باشه، دیگه مسئولیتی متوجه شما نیست. برای پیاده سازی این روش هم کافیه یک فیلد برای تعداد دفعات تلاش جهت لاگین بگذارین و هربار که رمز اشتباه وارد میشه، یک واحد بهش اضافه کنید و مثلاً اگه به 3 رسید، اکانت قفل میشه و ایمیل رو میفرستین. حالا هرموقع تونست لاگین کنه، اون فیلد رو صفر میکنید. توی لاگین هم فقط وقتی اجازه میدین وارد بشه که اون فیلد، کوچکتر از 3 باشه.

----------


## sherlock0111

ممنون از دوستان حل شد!

----------


## SilverLearn

فقط بنده یک قسمت رو اضاف کنم : 

این چیزهایی که دوستان گفتند همش خوب و درسته 
ولی به نظر بنده بعد از استفاده از چیزهایی که دوستان فرمودند . استفاده از آی پی کاربر هست . به این صورت که فقط آی پی کاربری که رمز رو اشتباه وارد می کنه بن بشه و...

دقیقا مثل اسکریپت whmcs که بعد از  3 بار لاگین ناموفق آی پی رو بن کرده و یک ایمیل حاوی اطلاعات آی پی و ... به کاربر اصلی میفرسته 


موفق باشید

----------


## MMSHFE

اتفاقاً برعکس مسدود کردن بر اساس IP رو کار خوبی نمیدونم چون توی اینترنت Dial-Up و ADSL خیلیها با IP مشترک سایت رو مورد بازدید قرار میدن و با این کار، دسترسی همه اونها به سایت قطع خواهد شد. ازطرفی به راحتی میشه با خاموش و روشن کردن مودم ADSL یا استفاده از یک کارت اینترنت Dial-Up دیگه و یا حتی با نرم افزارهای IP Changer آدرس IP رو تغییر داد.

----------


## SilverLearn

درسته آقای شهرکی قبلش می خواستم این چیزها رو بنویسم که ممکنه آی پی عوض بشه ولی ...

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

و نکته دیگه ای هم که هست میشه یک expire time برای بن بودن آی پی گذاشت که بعد از مدت خاصی آی پی پاک بشه و....

در کل به نظر بنده آی پی در این روش حتی برای جلوگیری از  حملات brute force نیز خیلی عالی هستش

----------


## MMSHFE

خوب معمولاً 90٪ امکانات سایت هم مربوط به کسانی هست که لاگین میکنن و بجز اون، چیزی بیشتر از یک سایت معرفی کننده نخواهیم داشت. درهرصورت چیزی که مسلمه اینه که باید زمان انقضا برای Ban بودن IP بگذاریم ولی باز هم توی مدتی که IP مسدود شده، هیچ کس با اون IP نمیتونه وصل بشه و این یعنی عدم امکان ارائه خدمات به تعداد زیادی از کاربران درحالی که هیچ تخلفی مرتکب نشدن و این مسئله نارضایتی زیادی در پی خواهد داشت. برای جلوگیری از Bruteforce هم روشهای بهتری مثل استفاده از الگوریتم کند برای تولید Hash و نمایش CAPTCHA بعد از چند بار واردکردن رمز اشتباه وجود داره.

----------


## SilverLearn

کلا قبول دارم جناب شهرکی .... :) 

ولی برای قسمت لاگین Admin آی پی دیگه نیازه :)

----------


## MMSHFE

نمیدونم شاید نظرمون با هم متفاوت باشه ولی در کل من بین Admin و بقیه کاربران فرقی نمیگذارم چون ممکنه که Admin هم با IP های مختلفی بخواد لاگین کنه و اگه یه IP رو مسدود کنیم، شاید اون IP همونی باشه که دفعه بعد Admin باهاش لاگین میکنه یا هر احتمال دیگه. درهرصورت محور اصلی صحبت من اینه که IP معیار محکم و قابل قبول و حتی بهینه ای برای امنیت لاگین نیست.

----------


## SilverLearn

دقیقا اینجا دیگه باهاتون موافق نیستم 

و همچنان می گم که برای admin استفاده از آی پی کاملا می تونه امنیت رو کمی حفظ کنه .....

در هر صورت خودم اگر بخوام سیستمی طراحی کنم حتما این موضوع رو در نظر می گیرم 

البته از گفته های قبلی شما هم استفاده می کنم ( همونطور که گفتم موافق جملات قبلیم )

----------


## abolfazl-z

یک روش امنیتی جالبی هم وجود دارد که فیس بوک از آن استفاده می کند.

بر فرض مثال وقتی که من در فیس بوک ثبت نام می کنم آی پی من که بیانگر مشخصات جغرافیایی من هست در پایگاه داده فیس بوک ثبت می شود و زمانی که می خواهم وارد شوم اگر از یک کشور(حالا دقیق نمیدونم کشور رو گیر میده یا شهر یا  استان و ...) دیگری وارد شوم فیس بوک اکانت من رو بلاک می کنه و اقدامات لازم رو انجام میدهد.

----------


## MMSHFE

> دقیقا اینجا دیگه باهاتون موافق نیستم 
> 
> و همچنان می گم که برای admin استفاده از آی پی کاملا می تونه امنیت رو کمی حفظ کنه .....
> 
> در هر صورت خودم اگر بخوام سیستمی طراحی کنم حتما این موضوع رو در نظر می گیرم 
> 
> البته از گفته های قبلی شما هم استفاده می کنم ( همونطور که گفتم موافق جملات قبلیم )


فرض کنید شما قراره ادمین سیستمی باشین که من قراره طراحی کنم. میتونید بهم تضمین بدین که همیشه با یک IP یکسان وارد سایت بشین؟

----------


## SilverLearn

درود 

تضمینی وجود نداره 

بعدشم expire time رو گذاشتیم برای همین دیگه ...

و اینکه دسترسی به پنل هاست هست و می تونه از phpmyadmin آی پی خودش رو حذف کنه....

----------


## MMSHFE

خوب اونوقت من اگه فقط بخوام شما مدیر سایت باشی و مطالب رو تغییر بدی و دسترسی به هاست بهتون ندم چی؟ مدام میخواین زنگ بزنین که Unlock کنمتون یا میخواین تا فردا صبر کنید که Expire بشه؟

----------


## SilverLearn

من که نگفتم یک آی پی پیش فرض ست کنیم که !

در صورتی که کاربر هنگام ورود اطلاعات کاربری اشتباه وارد کنه ( مثلا 3 بار ) آی پی طرف ثبت بشه و دیگه تا expire time تموم نشده اجازه ورود نداشته باشه ...

ولی در صورتی که اطلاعات صحیح وارد بشن که نیازی به ثبت آی پی نیست ...

مدیر هم باید حواسشو جمع کنه تا اطلاعات رو صحیح وارد کنه

----------


## MMSHFE

بهرصورت چیزی که مسلمه اینه که استفاده از IP خیلی حساسیت و دقت بالا لازم داره و به هیچ عنوان روش کامل  امن و حتی بهینه و مناسبی نیست (در اکثر کاربردها).

----------


## SilverLearn

ولی به نظر من در بعضی موارد خیلی کاربرد داره 

مثلا بگذارید یک مثال بزنم > من مدیر یک سرور اختصاصی هستم که مشتریان زیادی اعم از سرور مجازی و هاست اشتراکی رو روی این سرور دارم . حالا برای اینکه خودم راحت تر باشم و همش نخوام آی پی رو عوض کنم بیام و امنیت کلی سایت و سرویس رو نادیده بگیرم ....

درسته خیلی کارهای دیگه میشه کرد اعم از نصب چندین فایروال و انتی ویروس و انتی شل و ... (حتی فایروال سخت افزاری ) ... ولی خود بنده از محدود کردن آی پی در بسیاری از برنامه ها و ... استفاده می کنم ...

----------


## alipour57

سلام ،من چند بار رمز رو اشتباهی وارد کردم الان قفل شده ،چطور میتونم دوباره با همون سیمکارت دوباره بیام تلگرام؟

----------

