Avatar ·

تجزئة آمنة وإضافة ملح لكلمات المرور في PHP: كيف تفعل ذلك بشكل صحيح؟

مرحباً بالجميع. أنا مطور PHP مبتدئ، وواجهت مشكلة في تخزين كلمات مرور المستخدمين. حالياً أستخدم md5() بسيط، لكنني قرأت أن هذا غير آمن. حاولت إضافة ملح (salt)، لكنني لست متأكداً من أنني أفعل ذلك بشكل صحيح. إليك الكود الحالي للتسجيل: ```php $password = $_POST['password']; $salt = 'my_secret_salt'; $hashed_password = md5($salt . $password); // أحفظ $hashed_password في قاعدة البيانات ``` وللتحقق عند تسجيل الدخول: ```php $password = $_POST['password']; $salt = 'my_secret_salt'; $hashed_password = md5($salt . $password); // أقارن مع ما في قاعدة البيانات ``` المشاكل التي أراها: 1. الملح ثابت — إذا تم اكتشافه، فجميع كلمات المرور معرضة للخطر. 2. md5() سريع جداً، مما يسهل تخمينه. 3. لا توجد حماية ضد هجمات التوقيت (timing attack). أرشدوني، كيف يمكن تنفيذ تجزئة كلمات المرور بشكل صحيح في PHP؟ ما هي الدوال التي يجب استخدامها؟ هل أحتاج إلى توليد ملح فريد لكل مستخدم وأين أخزنه؟ سأكون ممتناً.