JavadAgha
JavadAgha
خواندن ۱ دقیقه·۷ ماه پیش

ذخیره سازی رمزها

چگونه رمزهای عبور را به صورت ایمن در پایگاه داده ذخیره کنیم؟

بیایید نگاهی بیندازیم.

ذخیره رمزهای عبور به صورت متن ساده ایده خوبی نیست زیرا هرکسی که به داخل دسترسی داشته باشد می‌تواند آن‌ها را ببیند.

ذخیره‌سازی هش رمزها به صورت مستقیم کافی نیست زیرا در معرض حملات پیش‌محاسبه، مانند جدول‌های رنگین‌کمان(rainbow tables) قرار دارد.

برای مقابله با حملات پیش‌محاسبه، ما رمزها را salt (نمک) می‌کنیم.

نمک (salt) چیست ؟ بر اساس دستورالعمل های OWASP ، نمک (salt) یک رشته منحصر به فرد و تصادفی است که در فرایند هش کردن به هر رمز افزوده می‌شود.

ذخیره رمز عبور
ذخیره رمز عبور


اعتبارسنجی رمزعبور
اعتبارسنجی رمزعبور

چگونه یک رمز و salt را ذخیره کنیم؟

  • نمک قرار نیست مخفی باشد و می‌توان آن را به صورت متن ساده در پایگاه داده ذخیره کرد. از آن برای اطمینان از منحصر به فرد بودن نتیجه هش هر رمز استفاده می‌شود.
  • رمز عبور می‌تواند در پایگاه داده با فرمت زیر ذخیره شود:
hash(salt + password)

چگونه یک رمز عبور را تأیید کنیم؟

برای تأیید یک رمز عبور، می‌توان از فرآیند زیر استفاده کرد:

  1. کاربر رمز عبور را وارد می‌کند.
  2. سیستم salt متناظر را از پایگاه داده بازیابی می‌کند.
  3. سیستم salt را به رمز عبور اضافه کرده و آن را هش می‌کند. بیایید ارزش هش شده را H1 بنامیم.
  4. سیستم H1 وH2 را ،جایی که H2 هش ذخیره شده در پایگاه داده است، مقایسه می‌کند. اگر آن‌ها یکسان باشند، رمز عبور معتبر است.


رمز عبورپایگاه دادهطراحی سیستم های نرم افزاریذخیره سازی
کنجکاو در مباحث مهندسی نرم افزار
شاید از این پست‌ها خوشتان بیاید