PDA

View Full Version : راهنمایی درباره هش کردن به روش Bcrypt



Mori Bone
جمعه 26 اردیبهشت 1393, 12:57 عصر
سلام و درود
من یه جدول دارم به صورت زیر:
119101
من در فیلد password رمزعبور کاربران را مستقیم بدون اینکه هش کتم ذخیره می کنم. حالا می خوام بدونم برای اینکه به روش Bcrypt بخوام هش کنم جدولم چجکری میشه.
یا اطلا کجا باد ذهیره کنم رمزعبوذ یا رمزعبور هض شده رو؟؟؟؟؟؟؟؟؟؟ شوال پشته سوال:گیج::کف::گریه::عصبانی++:

اگه کسی می تونه واضح و کامل توضیح بده دستشو می بوسم.:بوس:

Mori Bone
جمعه 26 اردیبهشت 1393, 21:37 عصر
جواب نداره؟ :متعجب:

mokhtasatxyz
یک شنبه 28 اردیبهشت 1393, 18:21 عصر
سلام
1- فیلد رمز را به varchar255تغییر بدهید
2- در زمان ثبت نام قیل از ارسال مقدار رمز به کوئری insert انرا از تابع cryptعبور دهید تا رمز وارد شده هش شود
3- در زمان طراحی فرم login مفدار وارد شده برای رمز را ابتدا از تابع cryptعبور دهید و سپس با کوئری برسی نمایید
4- پیشنهاد می کنم یک فید جدید در دیتابیس اضافه نمایید و در زمان ثبت نام رمز وارد شده کاربر را بدون عبور از تابع هش کننده در این فیلد ذخیره کنید چون تابع crypt یک طرفه است و غیر قابل برگشت پس در سایتت نمیتوانی قسمتی برای بازگردانی رمز عیور توسط مدیر و کاربران طراحی نمایید


تابع crypt خوبه 2تا پارامتر میگیره پارامتر اول پسوردیه که میخوای هش بشه و دومین پارامتر salt هست

توجه داشته باش که هردو پارامتر رو داشته باشه در غیر این صورت اگر salt نذاری خودش generate میکنه در این صورت پسورد یکسانی رو دریافت نمیکنی
پیشنهاد میکنم از دو تابع هش کننده ترکیبی استفاده کنید که در این صورت نوع فیلد را به text تغییر دهید

Mori Bone
دوشنبه 29 اردیبهشت 1393, 15:30 عصر
مگه پسورد رو هش نمی کنیم برای اینکه اگه کسی به بانک دیترسی پیدا کرد نتونه رمز عبور رو ببینه. پس چرا شما می گید که یه فیلد دگ درس کنم که رمز هش نشده رو توش ذخیره کنم

4- پیشنهاد می کنم یک فید جدید در دیتابیس اضافه نمایید و در زمان ثبت نام رمز وارد شده کاربر را بدون عبور از تابع هش کننده در این فیلد ذخیره کنید چون تابع crypt یک طرفه است و غیر قابل برگشت پس در سایتت نمیتوانی قسمتی برای بازگردانی رمز عیور توسط مدیر و کاربران طراحی نمایید

eshpilen
سه شنبه 30 اردیبهشت 1393, 09:38 صبح
هرگز اصل پسورد کاربر را جایی ذخیره نکنید.
این کار خطاست.
برای ریست کردن پسورد نیازی نیست که حتما پسورد اولیه بازیابی و دوباره همون ست بشه.

Mori Bone
سه شنبه 30 اردیبهشت 1393, 10:22 صبح
نه من می خوام پسورد رو نشون بدم خب وقتی هش یه طرفه هست چطوری به مدیر رمزشو نشون بدم. مشکله من اینه

Mori Bone
سه شنبه 30 اردیبهشت 1393, 21:14 عصر
کسی جوابه منو نمیده

eshpilen
چهارشنبه 31 اردیبهشت 1393, 08:46 صبح
نه من می خوام پسورد رو نشون بدم خب وقتی هش یه طرفه هست چطوری به مدیر رمزشو نشون بدم. مشکله من اینه
پسورد رو به مدیر نشون بدی؟
چرا؟

Mori Bone
چهارشنبه 31 اردیبهشت 1393, 10:12 صبح
چون مدیر دسترسی کامل داره به کاربران یه جدول درس کردم که تمام اطلاعات کاربران رو میاره به علاوه رمزعبور

MRmoon
چهارشنبه 31 اردیبهشت 1393, 10:56 صبح
چون مدیر دسترسی کامل داره به کاربران یه جدول درس کردم که تمام اطلاعات کاربران رو میاره به علاوه رمزعبور

پس انکریپتش کن موقع استفاده دیکریپت کن.(مثل base64)

eshpilen
چهارشنبه 31 اردیبهشت 1393, 12:37 عصر
چون مدیر دسترسی کامل داره به کاربران یه جدول درس کردم که تمام اطلاعات کاربران رو میاره به علاوه رمزعبور
یعنی چی دسترسی کامل داره؟
مگه مجبوری حتما پسورد کاربران رو هم نشون بدی؟
اصولا پسورد از دو جنبهء Privacy و Security کاربران اهمیت زیادی داره.
اینکه شما اصل پسورد کاربران رو در دسترس خودت یا هرکس دیگری بذاری، میشه یه نوع سوء استفاده و نقض حقوق کاربران و کلاهبرداری دونست، مگر اینکه دلیل قانع کننده ای براش بیاری.
مدیر یا کس دیگری فردا اومد از اون پسورد سوء استفاده کرد شما پاسخگو هستی؟
مثلا میاد با همون پسورد یا مشابهش به اکانت ایمیل و بقیهء اکانتهای دیگر کاربر هم نفوذ میکنه.
بعد گاهی در پسوردها اطلاعات شخصی هست (مثل شماره موبایلی چیزی) که کاربر فکرش رو نمیکرده که یکی بشینه اون پشت و همه این اطلاعات راحت جلوی چشمش باشه.
منکه شخصا اگر بدونم سایتی اینطوری هست بهش مشکوک میشم و فکر میکنم احتمالا آدم حسابی نیستن (گذشته از ناشی و/یا بی تعهد بودن برنامه نویسش).
حداقلش شما باید این قضیه رو از ابتدا به اطلاع کاربران برسونید تا بدونن و به این شکل تدابیر لازم رو در انتخاب پسورد خودشون اتخاذ کنن. البته شاید بگید به دلایل امنیتی نمیخواید این کار رو بکنید. بهرحال میان بعضی پارامترها یا سمت سرور و کلاینت، سایت و کاربران، برنامه نویس و کارفرما و کاربر، بعضی وقتا کم و بیش تضاد پیش میاد. باید یک راهکار معقول و متعادل و بهینه ای رو انتخاب کرد و سود و زیان دو طرف و پارامترهای مختلف رو برآورد کرد.

eshpilen
چهارشنبه 31 اردیبهشت 1393, 12:43 عصر
فرض کن مدیر خواست اطلاعات کارت بانکی کاربران رو هم ذخیره کنه و هروقت خواست ببینه، شما بعنوان برنامه نویس این کار رو میکنی؟
کلاه گذاشتن سر کاربران، هک کردنشون، سوء استفاده از بی اطلاعی و غیرمتخصص بودن اونا و اعتمادشون به سایت شما و پیشفرض هایی که دارن، کار سختی نیست، ولی این کارها از نظر اخلاقی درست نیست و از نظر قانونی هم خیلی وقتا مشکل داره.