توسيع واستخدام كود توليد الملح لنظام تسجيل الدخول PHP

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

سؤال

أنا أعمل على نظام تسجيل دخول php/mysql لمشروع ويب.بعد البحث في SO والكثير من المقالات على الويب، توصلت إلى إطار عمل أساسي وبدأت في كتابة بعض التعليمات البرمجية له.ومع ذلك، فقد وصلت إلى طريق مسدود قليلاً فيما يتعلق بتشفير كلمة المرور.

بعد ليلة من القراءة اكتشفت أن:

  • يجب أن تكون كلمة مرور المستخدمين على الأقل sha1 أو sha2
  • يجب أن أستخدم أيضًا ملحًا تم إنشاؤه عشوائيًا (هذا ما أحتاج إلى المساعدة فيه) وألحقه بكلمة المرور قبل تشفيره
  • يجب تخزين كلمة المرور المجزأة والملح الذي تم إنشاؤه عشوائيًا في قاعدة البيانات ثم الاستعلام عنها ودمجها/تشفيرها ثم التحقق من كلمة المرور المجزأة للمستخدمين.

مشكلتي هي أنني أقوم بتوليد الملح بشكل عشوائي،

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

المحلول

الاحتمالات التي يمكنني التفكير فيها:

  • يستخدم mt_rand() في حلقة لاختيار رمز ASCII، احصل على الحرف المقابل معه مركز حقوق الإنسان () و سلسل إلى الملح.

    وهذا يسمح بإنشاء أملاح بأي طول.

  • حدد سلسلة بالأحرف المتاحة، استخدمها mt_rand() في حلقة لاختيار مواضع عشوائية منها، قم باستخراج الحرف الموجود في الموضع المحدد به فرعية () أو mb_substr() و سلسل إلى الملح.

    يتيح ذلك إنشاء أملاح بمجموعة أحرف مختارة وطولها.

  • استخدم دالة مضمنة تنشئ سلسلة عشوائية (على سبيل المثال: يونيكيد()) وتجزئته اختياريًا.

    هذا سريع وبسيط.

أنا عادة استخدام الخيار الثاني.

نصائح أخرى

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top