پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
ببینید دیکد کردن md5 راحت نیست و یا باید پسورد توی دیتابیس دیکد کننده باشه و یا به روش brute force استفاده کنه !
که البته زمان پیدا شدن پسورد در روش brute force بستگی زیادی به طول پسورد داره . مثلا پسورد 10-12 حرفی شاید 100 سال طول بکشه :D
حالا هرچی این پردازنده قوی تر باشه کمتر اما با سرورهای فوق پرسرعت ناسا هم زمان خیلی زیادی طول میکشه که بخواید یه پسورد 10 حرفی دیکد کنید!
من خودم از یه روش استفاده میکنم . که شاید بتونه بهتون کمک کنه !
پسورد اول را sha1 میکنم
یه عبارت مشخص بهش اضافه میکنم و در نهایت بصورت md5 تو دیتابیس ذخیره میکنم !
با این روش حتی پسورد 123 هم قایل دیکد شدن نیست !
بهتره برنامنویس برای پسورد محدودیت بزاره و بگه کمتر از 6 یا 8 حرف نباشه ! و از حروف بزرگ و کوچیک و اعداد استفاده شده باشه !
اینجوری خیلی بهتره !
نقل قول:
فرض کنید کاربر این رمز رو داد: " F36*Y%5eg653G "
حالا این md5 یا هش میشه و تو دیتابیس ذخیره میشه، همین مقداری که تو دیتابیس ذخیره شده رو بدین به کسی به راحتی میتونه پسورد اصلی رو در بیاره! درسته؟؟؟ پس درواقع اون طور که میتونست از رمز محافطت کنه نتونسته این کد گذاری خوب عمل کنه
فکر نکنم کسی بتونه چنین پسوردی دیکد کنه . مگر اینکه از قبل توی دیتابیسش باشه!
جایی خودنم که دیتابیس پسوردها چیزی حدود 30 ترابایت هستش . ! و هرروز هم داره زیادتر میشه !
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
نقل قول:
نوشته اصلی توسط
AtrafNet
ممنونم_رفیق
در مورد crypt() شنیدم، میشه راهنمائی کنید تو این زمینه یا یه مثالی بزنید، واقعا امن هست؟
درمورد Blowfish - brute force چی هستند اینا؟؟؟ روش که دوستان گفتم به ذهنم خوب اومد، پسورد کاربر + یه مقدار پیش و روش های متنوع کد گذاری
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
نقل قول:
نوشته اصلی توسط
iroo
ممنونم
_رفیق
در مورد
crypt() شنیدم، میشه راهنمائی کنید تو این زمینه یا یه مثالی بزنید، واقعا امن هست؟
درمورد Blowfish - brute force چی هستند اینا؟؟؟ روش که دوستان گفتم به ذهنم خوب اومد، پسورد کاربر + یه مقدار پیش و روش های متنوع کد گذاری
منم اطلاع دقیقی از روش Blowfish ندارم اما پاراگراف اول تصویر بالا گفته که md5 و sha1 و sha256 برای این جهت هش کردن پسورد امن نیستن چون اینا بیشتر برای ارائه سرعت بالا در تولید خروجی هش شده ایجاد شدن و خط بعدش گفته یه کامپیوتر قدرتمند می تونه با روش Brute Force به رمز اصلی دست پیدا کنه که فکر کنم منظور اینجا از php علاوه بر امنیت بیشتر Blowfish سرعت کند ترش هم هست که اینجا مزیت حساب میشه چون با Brute Force مسلماً وقت خیلی بیشتری نسبت به md5 و sha1 نیازه تا بشه (شاید یه روزی) کرکش کرد :)
اینو باید از کارشناس های خود php بپرسید که چرا Blowfish رو پیشنهاد دادن.
می تونید تو این زمینه لینک های زیر هم مطالعه کنید:
http://www.the-art-of-web.com/php/blowfish-crypt/
https://joshtronic.com/2013/06/06/en...swords-in-php/
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
درود
برای اینکار باید دنبال الگوریتم های اختصاصی خودتون باشید
به عنوان مثال زمانی که کاربرا عضو میشه و اکانت ایجاد میشه یک کاراکتر Random واسش در نظر بگیرید ( به صورت یونیک )
حالا اون رو با پسورد ترکیب کنید
در ساده ترین حالت :
کد PHP:
$randomCode = "2s5cHdh";$password = "12345";
$encodePassword = md5($randomCode .'_'. $password);
یا استفاده از مقادیر ثابت دیگه مثل نام کاربری
کد PHP:
$randomCode = "2s5cHdh";$username = "admin";$password = "12345";
$encodePassword = md5($randomCode .'_'. $password .'_'. $username);
اما پیشنهاد بنده این هست که همیشه به جز استفاده از مقار یونیک در تیبل کاربرا یک کد ثابت هم در خود سورس قرار بدید تا در صورت هک شدن دیتابیس و دسترسی به کدهای یونیک دسترسی به کد ثابت موجود در سورس فراهم نباشه, تا اینجا اگه دیتابیس شما هک بشه 50 درصد امنیت کاربران حفظ میشه مگر اینکه سورس و الگوریتم در اختیار هکر قرار بگیره
میتونید هم از ترکیب md5 و sha1 به صورت ترگیبی با الگوریتم جدا استفاده کنید
و راهای بسیار دیگه که با کمی خلاقیت و تسلط به برنامه نویسی PHP میتونید امنیت پسورد کاربرانتون رو چندین برابر کنید
البته این مورد یک مثال خیلی ساده و ابتدایی هست, با صرف کمی زمان و کمی مطالعه میتونید الگوریتم اختصاصی خودتون رو بنویسید که از پیچیده گی بسیار بیشتری برخوردار باشه
اما در هر صورت هر چیزی که قابل کد شدن باشه قابلیت دیکد هم داره اما با توجه به سختی و نوع الگوریتم زمان بیشتر یا کمتری رو میگیره
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
درود بر شما. به نظر من با ترکیب دو رمز نگاری میتوانید امنیت رو بالا ببرید به عنوان مثال یکبار پسورد رو با md5 رمز نگاری کرده و همون پسورد رمز نگاری شده رو با hash مجددا رمز نگاری کنید. با این کار امکان decode کردن به حد صفر میرسد.
به عنوان مثال من عدد 123 رو با این روش رمز نگاری کردم به صورت زیر در امد.
6e5dcee9fc558420d007c8f06f284c33
طراحی سایت
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
بنظر من بهترین ترکیب کریپت با md5 هست
1.طول رشته در فیلد دیتا بیس کوتاه میشه در کلیت حجم نصف و سرچ رو نیز بهبود میده
مشابه زیر
کد PHP:
function hashPass($value){
$value=crypt('$#%#$%@#'.$value.'^&()(@',md5("!#^&$value"));
return $value;
}
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
نقل قول:
برای اینکار باید دنبال الگوریتم های اختصاصی خودتون باشید
بسیاری از توصیه های دوستان خوب بود. اما بهترین اشاره همین نقل قول فوق است.
ضمن این که فراموش نکنید شما مثلا دارید رمز حساب کاربری انجمن یک نفر را ذخیره می کنید یا رمز حساب بانکی کاربر.
منظورم این است سطح امنیت را لحاظ کنید و مثلا برای دوچرخه خود قفلی طراحی نکنید که حملش به ماشین نیاز داشته باشد.
به نظر من md5 به صورت ترکیب با یک الگو که فقط برنامه نویس ازش خبر دارد به قدر کافی (حتی در رده یک بانک) میتواند ایمن باشد. شما میتوانید salt را با الگویی اختصاصی خودتان تولید کنید. در جایی که هیچ کس ازش خبردار نیست. تا نیاز نباشد مثل خیلی اسکریپت ها salt را کنار رمز بزارید (مثل IPB) که راحت در دسترس باشد. مثلا بر اساس روز هفته یا ip رجیستر شده کاربر با کمک md5 یا شاها یک salt یونیک برای اون کاربر ایجاد می کنید.
از اونجا که تاریخ رجیستر کاربر یا مثلا IP که باش در سایت شما رجیستر کرده همیشه موجود است، همواره میتونید این salt را بازیابی کنید و نیاز نیست در دیتابیس ذخیره اش کنید. کسی هم نمی داند این salt از کجا آمده و بر فرض انکرایپت کردن هش md5 شما به رمز درستی دست پیدا نمی کند.
اگر موضوع فرای آن باش و دیتای فوق محرمانه باشند که دیگر طبق الگوها اصلا داشتن پسورد فاقد امنیت است و باید رفت سراغ کلید رمزنگاری این حرف ها (بیشتر در رده اطلاعاتی سازمان ها).
در اون متد شما شبیه ssl عمل می کنید. کلید رمز نگاری خصوصی دست کاربر است و عمومی در سمت سایت عرضه شده و تطابق اون مجوز احراز هویت کاربر. البته جایی که شما دیتا را انکرایپت شده ذخیره نمی کنید استفاده از این متد بی معنی است. این متد جایی کاربرد دارد که شما میخوای مدیر سایت هم به اطلاعات حساب شما دسترسی نداشته باشد. یعنی هیچ کس جز خود کاربر. (نه فقط لاگین کردن بلکه کل اطلاعات حساب).
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
نقل قول:
نوشته اصلی توسط
M.Abooali
بسیاری از توصیه های دوستان خوب بود. اما بهترین اشاره همین نقل قول فوق است.
ضمن این که فراموش نکنید شما مثلا دارید رمز حساب کاربری انجمن یک نفر را ذخیره می کنید یا رمز حساب بانکی کاربر.
منظورم این است سطح امنیت را لحاظ کنید و مثلا برای دوچرخه خود قفلی طراحی نکنید که حملش به ماشین نیاز داشته باشد.
به نظر من md5 به صورت ترکیب با یک الگو که فقط برنامه نویس ازش خبر دارد به قدر کافی (حتی در رده یک بانک) میتواند ایمن باشد. شما میتوانید salt را با الگویی اختصاصی خودتان تولید کنید. در جایی که هیچ کس ازش خبردار نیست. تا نیاز نباشد مثل خیلی اسکریپت ها salt را کنار رمز بزارید (مثل IPB) که راحت در دسترس باشد. مثلا بر اساس روز هفته یا ip رجیستر شده کاربر با کمک md5 یا شاها یک salt یونیک برای اون کاربر ایجاد می کنید.
از اونجا که تاریخ رجیستر کاربر یا مثلا IP که باش در سایت شما رجیستر کرده همیشه موجود است، همواره میتونید این salt را بازیابی کنید و نیاز نیست در دیتابیس ذخیره اش کنید. کسی هم نمی داند این salt از کجا آمده و بر فرض انکرایپت کردن هش md5 شما به رمز درستی دست پیدا نمی کند.
اگر موضوع فرای آن باش و دیتای فوق محرمانه باشند که دیگر طبق الگوها اصلا داشتن پسورد فاقد امنیت است و باید رفت سراغ کلید رمزنگاری این حرف ها (بیشتر در رده اطلاعاتی سازمان ها).
در اون متد شما شبیه ssl عمل می کنید. کلید رمز نگاری خصوصی دست کاربر است و عمومی در سمت سایت عرضه شده و تطابق اون مجوز احراز هویت کاربر. البته جایی که شما دیتا را انکرایپت شده ذخیره نمی کنید استفاده از این متد بی معنی است. این متد جایی کاربرد دارد که شما میخوای مدیر سایت هم به اطلاعات حساب شما دسترسی نداشته باشد. یعنی هیچ کس جز خود کاربر. (نه فقط لاگین کردن بلکه کل اطلاعات حساب).
درود
راه که زیاد
اما باید دید هدف چیه
مثلا برای خیلی ایمن شدن میشه یوزر و یا ایمیل یا ... md5 کرد و substr و روز ماه ثبت شده از رشته انم اون که طبیعتا 31 حداکثر میشه مثلا 5 تا رو گرفت و موارد مشابه که فرمودین
اما واقعا نیاز نیست مهمترین اصل کامپایل کدها هست که میشه تا حدودی زیادی امنیت رو بالا برد یا شخصی سازی فانکشن های دیفالت php در سرور اختصاصی سایت و...
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
روشهای از من درآوردی را فراموش کنید
همون طور که یکی از دوستان گفتند، بهترین روش استفاده از دستورات اضافه شده در php جدید با نام password_hash و password_verify هست
آخرین اصول امنیتی روز در این توابع پیادهسازی شده و امکان استفاده از روشهای متداول برای بازیابی رمزها در توابع فوق تقریبا غیرممکن است
پاسخ : امن ترین رمزگذاری برای ذخیره سازی password در دیتابیس
نقل قول:
نوشته اصلی توسط
AMIB
روشهای از من درآوردی را فراموش کنید
همون طور که یکی از دوستان گفتند، بهترین روش استفاده از دستورات اضافه شده در php جدید با نام password_hash و password_verify هست
آخرین اصول امنیتی روز در این توابع پیادهسازی شده و امکان استفاده از روشهای متداول برای بازیابی رمزها در توابع فوق تقریبا غیرممکن است
سلام بر شما
هیچ چیز غیره ممکنی در دنیای انفورماتیک وجود ندارد
لازمه عرض کنم برای md5 و ... هیمن تعریف و تمجید شما در قدیم بود
کلا هر چیزی پابلیک باشه شانس لو رفتن الگوریتمش بیشتر میشه
من درآوردی رو من نمیدونم چی مینامید
ولی همون توابع رو هم کسانی نوشتن که من بودن از مریخ که نیومدن
سعی کنید دیدتون رو کمی ئسیع تر کنید
با تشکر