أفضل الممارسات على توليد رموز إعادة تعيين كلمة المرور

StackOverflow https://stackoverflow.com//questions/20013672

  •  21-12-2019
  •  | 
  •  

سؤال

أي أفضل الممارسات حول كيفية إنشاء رمز كلمة مرور إعادة تعيين؟أنا أفكر:

عشوائي 17 حرفا [A-ZA-Z0-9] + معرف فريد من نوعه + عشوائي 17 حرفا [A-ZA-Z0-9].

هل هناك حل أفضل، أو معيار الصناعة على رموز إعادة تعيين كلمة المرور؟

هل كانت مفيدة؟

المحلول

هناك بعض النقاط المهمة التي يجب مراعاتها.

  1. يجب أن يكون الرمز عشوائيا حقا (اقرأ من MCRET_DEV_URANDOM)، ولا ينبغي أن يكون مرتبة من المعلومات الأخرى ذات الصلة المستخدم.
  2. من الناحية المثالية رمز الترميز Base62 (A-Z A-Z 0-9) لتجنب مشاكل عنوان URL.
  3. LI> store فقط التجزئة من الرمز المميز في قاعدة البيانات ، وإلا يمكن لأي مهاجم الوصول إلى قاعدة البيانات إعادة تعيين أي حساب.
  4. هذا يؤدي إلى المشكلة التي يجب عليك العثور عليها العثور على التجزئة من الرمز المميز في قاعدة البيانات، بعد النقر فوق المستخدم على الرابط. هناك طريقتان ممكنان لتخزين الرمز المميز:

    • أنت تتجه الرمز المميز مع خوارزمية التجزئة مثل SHA512 بدون ملح. هذا أمر آمن إذا كان الرمز المميز قويا جدا (طول الحد الأدنى 20 مع 0-9 A-Z A-Z). من الناحية النظرية عليك التحقق مما إذا كان هذا التجزئة موجودا بالفعل قبل إدخاله في قاعدة البيانات، في الممارسة العملية ضئيلة. لقد قمت بتطبيق فئة إعادة تعيين كلمة المرور يمكن أن تتعامل مع مثل هذه الرموز.
    • أنت تتجه الرمز المميز مع bcrypt والملح. يتيح ذلك للحصول على الرموز القصيرة، ولكن لا يمكنك البحث عن الرمز المميز الفاشل في قاعدة البيانات. بدلا من ذلك، يجب عليك تضمين معرف صف في الرابط للعثور على الرمز المميز.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top