PDA

View Full Version : سوال: PasswordRecovery



fakhravari
دوشنبه 25 مهر 1390, 23:23 عصر
با سلام
دوستان من تنظیمات set کردم
اما برای PasswordRecovery
پسورد کاربران چنج میکنه نه همان پسورد قبلی میفرسته.
این جوری که خیلی بده:متعجب:

محمد متاله
دوشنبه 25 مهر 1390, 23:37 عصر
با سلام
خب چون پسورد به صورت Hash شده در DB ذخیره شده نمی توانید آن را بخوانید (لا اقل بنده سعی بر برگرداندن و دکد کردن پسورد هش شده ای که خود کنترل های لاگین انجام داده اند نکرده ام)
ولی هیچ مشکلی نیست شما می بایست ابتدا مثلا ایمیل کاربر را از او بپرسید اگر چنین ایمیلی داشت یک لینک جدید برای ایمیلش بفرستید اگر کاربر رفت درون Inbox ایمیلش و روی این لینک کلیک کرد یعنی کاربر خودش می باشد و واقعا پسوردش را فراموش کرده و وقتی کاربر روی این لینک کلیک کرد شما در آن صفحه پسوردش را عوض کنید این لینک را با استفاده از تکنیک QueryString بسازید
وقتی هم که پسورد را برایش عوض کردید به ایمیلش ارسال کنید
برای اینکه به کاربر این امکان را بدهید که بتواند پسوردش را عوض کند از کنترل ChangePassword در تب login استفاده کنید

fakhravari
سه شنبه 26 مهر 1390, 04:36 صبح
با سلام محمد متاله عزیز
اگه میشه یه مثال بزنید.:لبخندساده:

محمد متاله
سه شنبه 26 مهر 1390, 13:28 عصر
دوباره سلام
فکر کنم توضیحات کامل بود

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

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

آدرس صفحه را به صورت www.yousite.com/recoverypassword.aspx?id=jfdbgvldhgkldhjvbgjhbjvjv gfjh که مقدار id همان رشته رندم می باشد

در این صفحه QueryString مربوط به id را بخوانید اگر در DB بود پسورد همان کاربری را که در آن رکورد ذخیره کرده اید را recovery کنید و به ایمیلش بفرستید و این رکورد را هم delete کنید

Saman Hashemi
سه شنبه 26 مهر 1390, 13:49 عصر
پسورد های Hash شده قابل برگشت نیستند برای همین چون نمیتونه پسورد قبلی برگردونه یه دونه جدید میفرسته...!
چرا اینقدر کار سخت کنه شما مثل گوگل و فیسبوک عمل کن یه کد براش بفرست یه صفحه هم بساز طرف میاد نام کاربری و کد وارد میکنه درست بود اجازه بده رمز جدید وارد کنه که میتونه قبلی هم باشه...!

محمد متاله
سه شنبه 26 مهر 1390, 14:32 عصر
خب بنده چون خودم به شخصه از سوال های امنیتی متنفرم (البته بنده این طور هستم چون بعد از گذشت چند سال یادم نمیاد به سوال امنیتی چه پاسخی داده بودم) سوالات امنیتی را در web.config حذف می کنم برای همین تنها روش صحیح همانی هست که در بالا توضیح داده ام
اما اگر بخواهیم سوالات امنیتی را داشته باشیم :ناراحت: روشی که شما گفتید را می توان استفاده کرد یعنی اینکه سوال امنیتی را از کاربر بپرسیم اگر درست جواب داد پسورد را یا برایش ریست کنیم و به ایمیلش بفرستیم و یا اینکه پسورد جدیدی را از وی بپرسیم و آن را برایش ست کنیم

fakhravari
سه شنبه 26 مهر 1390, 15:28 عصر
با سپاس
ولی سوال امنیتی خیلی دستوپاگیره منم با اقای محمد متاله موافقم .:لبخندساده:
این مسائل بیشتر برای امنیت بانکها کاربرد داره تا سایتهای مثل همین برنامه نویس :چشمک:

Saman Hashemi
سه شنبه 26 مهر 1390, 15:50 عصر
منم منظور سوال امنیتی نیست وقتی شما رمز جی میل فراموش میکنید و درخواست میدید که رمز فراموش کردم براتون یه کد SMS یا ایمیل میکنه شما بعد از وارد کردن کد در صورت درست بودن کد، اجازه دارید برای ایمیلتون یه رمز جدید وارد کنید...!
این با سوال امنیتی که شما میگید فرق داره چون احتمال حدس زدن سوال امنیتی باز وجود داره ولی این نه...!