
- بواسطة x32x01 ||
يعني إيه "ملح" (Salt)؟
الـ ملح (Salt) هو قيمة عشوائية بنضيفها لكلمة المرور قبل ما نتشفّرها أو نعمل لها هاش. فبدل ما نشفر كلمة المرور لوحدها، بندمجها مع الملح الأول.ده بيخلي حتى لو كان عندك كلمة مرور بسيطة أو مشهورة، الناتج المشفر يطلع مختلف عن بقية الناس.
مثال بسيط:
لو كلمة السر بتاعتك:
password123
ولو الملح:
xYz$1
هنشفّر:
password123xYz$1
→ الناتج هيبقى هاش مختلف عن اللي لو حد تاني استخدم password123 من غير ملح.ليه نستخدم الملح؟
- مكافحة Rainbow Tables: الجداول دي بتدي هاشات جاهزة لكلمات سر شائعة. الملح يخلّي كل هاش فريد ومينفعش تستخدم الجداول دي.
- منع التكرار: لو اتسربت قاعدة بيانات فيها هاشات، مش هتعرف تفرق إن في كذا مستخدم ليهم نفس الباسورد لأن الملح بيغيّر الناتج لكل مستخدم.
- يزيد صعوبة الكسر: حتى لو المهاجم عنده الهِش، لازم يعمل هجوم على كل مستخدم على حدة لأن كل واحد له ملح خاص.
نصايح عملية: ازاي تستخدم الملح صح
1. استخدم ملح فريد لكل مستخدم
مش بنستخدم ملح ثابت للموقع كله. لازم كل حساب ليه ملح مختلف (random salt per user).2. خزن الملح جنب الهاش
الملح مش سرّ، بتخزنه في قاعدة البيانات مع الهش علشان لما المستخدم يدخل تقدر تعيد نفس العملية وتتحقق من الباسورد.3. استعمل خوارزميات مصممة للـ Password Hashing
بدل ما تفكر في عمل هاشرات يدوية، استخدم خوارزميات محسوبة ومأمونة زي:- bcrypt
- Argon2 (موصى به جدًا)
- scrypt
4. ممكن تضيف "فلفل" (Pepper)
الـ pepper قيمة سرية بتتحط على مستوى التطبيق (مش مخزنة في قاعدة البيانات) بتزود طبقة أمان إضافية لو اتسرّبت الداتا. لكن خلي بالك لازم تتخزن بأمان في مكان منفصل (مثل server env variable أو HSM).5. لا تستخدم خوارزميات عاملة بسرعة
زي MD5 أو SHA1 لوحدهم - دول سريعين وسهل يكسرهم بالـ brute-force. استخدم bcrypt/Argon2 لأنها بطيئة مقصودة وبالتالي صعبة على المهاجم.مثال عملي بسيط (Python + bcrypt)
Python:
import bcrypt
# إنشاء هاش جديد لكلمة المرور (bcrypt بيتعامل مع salt داخلياً)
password = b"password123"
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
print(hashed) # خزّن الناتج في DB (كـ bytes أو string)
# للتحقق:
entered = b"password123"
if bcrypt.checkpw(entered, hashed):
print("Password OK")
else:
print("Wrong password")
خلاصة سريعة
- الـ Salt مهم جدًا لحماية كلمات المرور من هجمات جاهزة وعمليات الكسر الجماعي.
- استخدم ملح فريد لكل مستخدم وخوارزميات حديثة زي bcrypt أو Argon2.
- فكر في pepper لو عايز طبقة حماية إضافية.
- ودايمًا خليك محدث بممارسات الأمان وأدوات المصادقة الحديثة (مثل 2FA) لتقوية الحماية أكتر.
التعديل الأخير: