PDA

View Full Version : سوال: ذخیره نشدن password روی سیستم



hastiam
شنبه 30 اردیبهشت 1391, 13:52 عصر
سلام
آیا این امکان وجود دارد که با برنامه نویسی، دستوری نوشت که وقتی کاربر پسورد خودش را وارد می کند هیچ وقت روی سیستم ذخیره نشود که اگر کاربر دیگری خواست روی همان سیستم کار کند نتواند با پسورد دیگری وارد شود؟
در واقع اگر کسی تیک مرا به خاطر بسپارید را هم بزند پسورد save نشود.

hamid_kha
شنبه 30 اردیبهشت 1391, 19:04 عصر
دوست عزیز فکر نکنم همچین چیزی رو بشه پیاده سازی کرد . شاید هم بشه! البته این نظر منه!
دوستان دیگه هم اگه اطلاعاتی دارند بدهند.

usef.e1364
شنبه 30 اردیبهشت 1391, 21:05 عصر
خب چه کاریه؟!! شما کلا گزینه "مرا به خاطر بسپارید" را نذارید.

hastiam
یک شنبه 31 اردیبهشت 1391, 10:15 صبح
خب چه کاریه؟!! شما کلا گزینه "مرا به خاطر بسپارید" را نذارید.
من این گزینه رو نذاشتم خود browser این پیغام رو میده و می خوام اگه کاربری اشتباهاً دکمه ذخیره رو زد ذخیره نکنه! آیا با برنامه نویسی راهی برای جلوگیری هست یا نه؟:متفکر:

eshpilen
یک شنبه 31 اردیبهشت 1391, 10:29 صبح
پسورد رو که هیچ برنامه حرفه ای در سیستم کلاینت ذخیره نمیکنه. منظور در کوکی و اینها دیگه؟

تعجب میکنم چطور این موارد رو کسی در این جا نمیدونسته. خیلی ها میگن برنامه نویسان ASP.NET عمقی و مفهومی یاد نمیگیرن چون همش از چیزهای آماده و سطح بالا استفاده میکنن. ظاهرا درست میگن! چون باز بین PHP کارها افرادی بیشتری این مسائل رو میدونن، و این سوال اگر در تالار PHP مطرح میشد جواب های صحیح تری میگرفت.

شما در سمت سرور هم اصل پسورد رو نباید ذخیره کنید. یعنی بیشتر برنامه های وب اینطوری هستن. اما بازم در این بین کامپوننت لاگین ASP.NET استثناء هست و نمیدونم به چه دلیل اینطوریه. البته اونم فکر نکنید همینطوری Plain text ذخیره میکنه، بلکه تاجاییکه بنده میدونم از سیستم رمزنگاری درونی ویندوز استفاده میکنه تا هرکسی نتونه همینطوری به این راحتی به پسوردها دست پیدا کنه.

در بقیهء برنامه ها و این همه سایت و بخصوص سیستمهای بازمتن اگر نگاه کنید، هش پسورد رو در سمت سرور ذخیره میکنن. Plain text پسورد کاربر هیچوقت نه روی سرور و نه روی کلاینت ذخیره نمیشه. نیازی هم نیست.
تازه هش کردن اصولی روش و اصول داره و همینطوری نیست که بیاید یه تابع هش مثل SHA256 رو اعمال کنید (در یک سیستم کاملا حرفه ای و پیشرفته از سالت ثابت و رندوم و Key stretching استفاده میشه).

روی کلاینت هم بعضی افراد ممکنه همون هش رو ذخیره کنن بجای پسورد. ولی ذخیرهء کلیدهای رندوم بنظرم راه حرفه ای تر و امن تری است.
فرض کنید شما به ازای هر اکانت یک رشتهء رندوم طولانی تولید میکنید. مثلا یک رشتهء 22 کاراکتری متشکل از اعداد و حروف بزرگ و کوچک (اینکه طولش چی باشه و از چه کاراکترهایی تشکیل شده باشه باز خودش محاسبه داره بر اساس علم رمزنگاری). بعد این رشتهء رندوم رو میتونید در کوکی سمت کلاینت ذخیره و برای احراز هویت خودکار ازش استفاده کنید. ضمنا این رشتهء رندوم باید توسط یک تابع رندوم امن مناسب برای استفاده در رمزنگاری، مثل تابع CryptGenRandom (http://en.wikipedia.org/wiki/CryptGenRandom)، تولید بشه.

Saman Hashemi
یک شنبه 31 اردیبهشت 1391, 10:44 صبح
دوست عزیز اصلا خوب نیست آدم در جواب یه سوال سواد تمامی کسایی که تو شاخه کار میکنن زیر سوال ببره البته من بیسوادم اما خوبه آدم یاد بگیره به دیگران احترام بذاره همیشه مغرضانه صحبت نکنه...!

تعجب میکنم چطور این موارد رو کسی در این جا نمیدونسته. خیلی ها میگن برنامه نویسان ASP.NET عمقی و مفهومی یاد نمیگیرن چون همش از چیزهای آماده و سطح بالا استفاده میکنن. ظاهرا درست میگن! چون باز بین PHP کارها افرادی بیشتری این مسائل رو میدونن، و این سوال اگر در تالار PHP مطرح میشد جواب های صحیح تری میگرفت.
وقتی سوال ابتدایی و بیشمار بار تو سایت مطرح شده هیچ کاربر حرفه ای بهش جواب نمیده و این بدیهی...!

شما در سمت سرور هم اصل پسورد رو نباید ذخیره کنید. یعنی بیشتر برنامه های وب اینطوری هستن. اما بازم در این بین کامپوننت لاگین ASP.NET استثناء هست و نمیدونم به چه دلیل اینطوریه. البته اونم فکر نکنید همینطوری Plain text ذخیره میکنه، بلکه تاجاییکه بنده میدونم از سیستم رمزنگاری درونی ویندوز استفاده میکنه تا هرکسی نتونه همینطوری به این راحتی به پسوردها دست پیدا کنه.
این درست که باید هش شود اما در کنترل لاگین هم این امکان هست هم اتوماتیک و هم به صورت سفارشی...! سیستم رمزنگاری ویندوز یعنی چی؟ یعنی یه سری میتونن به پسورد هش شده غیر قابل برگشت دسترسی داشته باشند؟
اصلا چرا باید پسورد کلید هش شده یا نشده روی کلاینت ثبت بشه؟شما که با سوادی این حرف نزن...!
فکر کنم اگه خاصیت autocomplete="off" برای textbox قرار بدی دیگه مرورگر این سوال نپرسه...!

alonemm
یک شنبه 31 اردیبهشت 1391, 12:04 عصر
باسلام:

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

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

در جواب سوال دوستمون هم همونطور که آقای Saman Hashemi اشاره کردن با اضافه کردن خصیصه های زیر به تکس باکس دیگه این پیغام توسط مرورگر از شما پرسیده نمیشه که رمز عبور را ذخیره کنه:

AutoCompleteType="None" EnableViewState="false" autocomplete="off"


موفق باشید.

eshpilen
یک شنبه 31 اردیبهشت 1391, 12:18 عصر
دوست عزیز اصلا خوب نیست آدم در جواب یه سوال سواد تمامی کسایی که تو شاخه کار میکنن زیر سوال ببره البته من بیسوادم اما خوبه آدم یاد بگیره به دیگران احترام بذاره همیشه مغرضانه صحبت نکنه...!
اشتباه شما همینجاست که فکر میکنید هرکس فلان طور حرف بزند و واقعیات یا نظریاتی را بیان کند که دیگران خوششان نیاید، عمل نامشروعی را مرتکب شده یا مغرض است.
بنده صرفا واقعیت یا نظر و استدلالی را بیان میکنم و دنبال روشن شدن هستم و نه چیز دیگر.
ضمنا از این گفته ها نمیتوان برداشت کرد که بنده دارم میگویم تمام کسانی که در این شاخه کار میکنند اینطور هستند. چیزی که بنده مطرح کردم از نظر آماری و افرادی خاصی است، بخصوص افرادی که از این زبان و پلتفرم شروع کرده و به آن پایان می یابند. وگرنه ممکن است خود بنده هم که قبلا PHP و زبانهای دیگر کار کرده ام اکنون در ASP.NET هم فعالیت کنم.


سیستم رمزنگاری ویندوز یعنی چی؟ یعنی یه سری میتونن به پسورد هش شده غیر قابل برگشت دسترسی داشته باشند؟
تاجاییکه میدانم ویندوز یک سیستم رمزنگاری داخلی دارد که مثلا برای محافظت از پسورد اکانتهای کاربری خودش هم از آن استفاده میکند. و البته این سیستم بوسیلهء API در اختیار برنامه نویسان هم هست. خیلی وقت پیش مقاله ای در این مورد خوانده بودم.
اینهم که میگویم ASP.NET این کار را میکند بخاطر این است که تاجاییکه یادم هست و قبلا مطالعه کرده بودم (تمامی رفرنس دات نت را خوانده ام)، موقعی که از گزینهء Forgot password کامپوننت رجیستر و لاگین دات نت استفاده میکنیم، اصل همان پسورد قبلی را به ایمیل ارسال میکند. بنابراین حتما این پسورد هش نشده است و نهایتا بصورت رمزنگاری برگشت پذیر در روی سیستم ذخیره شده است.
حال اگر خواستید میتوان تحقیق و پیگیری بیشتری کرد. فکر نمیکنم کار سختی باشد. خودتان دوتا سرچ بزنید در گوگل احتمالا پیدا میشود.


اصلا چرا باید پسورد کلید هش شده یا نشده روی کلاینت ثبت بشه؟شما که با سوادی این حرف نزن...!
فکر کنم اگه خاصیت autocomplete="off" برای textbox قرار بدی دیگه مرورگر این سوال نپرسه...!

اگر منظورشان ویژگی ذخیرهء پسورد مرورگرها بوده است حرف دیگریست. بنده فکر کردم منظور autologin بودن کاربر است. بخصوص که استارتر گفته است: در واقع اگر کسی تیک مرا به خاطر بسپارید را هم بزند پسورد save نشود.
ظاهرا بیان استارتر مبهم و نادقیق بوده است از نظر تخصصی.

hastiam
یک شنبه 31 اردیبهشت 1391, 12:37 عصر
ببخشید من نمیدونستم این سوال من این همه جنجال به پا میکنه. :ناراحت::اشتباه:
در ضمن من اول تو تالار asp سرچ کردم وقتی به نتیجه ای نرسیدم سوال رو مطرح کردم.
به هر حال ممنونم به خاطر وقتی که گذاشتید.

Saman Hashemi
یک شنبه 31 اردیبهشت 1391, 14:31 عصر
تعجب میکنم چطور این موارد رو کسی در این جا نمیدونسته. خیلی ها میگن برنامه نویسان ASP.NET عمقی و مفهومی یاد نمیگیرن چون همش از چیزهای آماده و سطح بالا استفاده میکنن. ظاهرا درست میگن!
دوست عزیز شما این جمله به صد نفر بدی بخونه همون منظوری دریافت میکنه که من کردم بعدم خیلی حرفارو میشه زد که واقعیت داره اما شاید گفتنش خوب نباشه و شخصیت گوینده زیر سوال میبره در ضمن اصلا با حرف شما موافق نیستم چون خیلی از پستها توی خود سایت asp.net با اینکه جوابش مشخص هست بی جواب مونده آیا میشه سواد مدیران سایت که همه MVP هستند یا در تیم توسعه asp.net هستند زیر سوال برد؟ من خیلی هارو توی این سایت دیدم که مثلشون تو دنیا کمه اما همین حرفا و قضاوت باعث شد راحت ازین سایت برن و اطلاعات و سوادشون توی فروم های خارجی قرار بدن...! دوست بزرگوار من طرز نگرشت به زندگی عوض کن ناسلامتی شما جز قشر باسواد هستی...!

(تمامی رفرنس دات نت را خوانده ام)
دوست باسواد من شما سوال درست نخوندی بعد یه جواب دادی و سواد همه بچه های فروم asp.net بردی زیر سوال بردی؟بعد چه انتظاری داری؟

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