- بواسطة x32x01 ||
خلّينا نبدأ بالحقيقة اللي ناس كتير مش حابة تسمعها 😅
إنت كدا كدا ممكن تتسرق الشطارة بقى إن اللي يتسرق ما ينفعش في أي حاجة.
هنا بقى بيظهر مفهوم غلط منتشر حتى وسط ناس شغالة Tech 👇
إن: لو الـ hash اتسرق وهو ماشي في الـ network يبقى الحساب راح
وده… مش حقيقي خالص ❌
الـ hash:
1️⃣ السيستم يستقبل password كـ string
2️⃣ يعمل له hashing داخليًا
3️⃣ يقارن الناتج باللي متخزن في الـ database
مثال بسيط:
📌 hashing = تحويل في اتجاه واحد يعني مستحيل عمليًا ترجّع الباسورد الأصلي من الهاش.
بالتالي:
الخطوات:
الهاكر ناقصه:
الخوارزميات الصح:
الخوارزميات دي مصممة إن:
📌 مفيش ولا لحظة بنخزن الباسورد الأصلي.
إنت كدا كدا ممكن تتسرق الشطارة بقى إن اللي يتسرق ما ينفعش في أي حاجة.
هنا بقى بيظهر مفهوم غلط منتشر حتى وسط ناس شغالة Tech 👇
إن: لو الـ hash اتسرق وهو ماشي في الـ network يبقى الحساب راح
وده… مش حقيقي خالص ❌
🧠 ليه سرقة الـ hash مش معناها اختراق؟
علشان ببساطة: الـ hash مش credentialالـ hash:
- مش كلمة سر
- مش مفتاح دخول
- مش حاجة السيستم يقبلها من برّه
⚙️ السيستم بيعمل إيه فعلًا مع الباسورد؟
السيناريو الحقيقي بيبقى كده 👇1️⃣ السيستم يستقبل password كـ string
2️⃣ يعمل له hashing داخليًا
3️⃣ يقارن الناتج باللي متخزن في الـ database
مثال بسيط:
Code:
Rawan123! → X7s9#@!Qp بالتالي:
- مفيش API
- مفيش endpoint
- مفيش سيناريو
🤔 طيب ولو الهاش اتسرق فعلًا؟
سؤال في مكانه 👌 وهنا بقى يظهر السلاح السري الحقيقي 🧂🧂 الـ Salt: اللي بيقفّل اللعبة على الآخر
Salt من أذكى وأهم القرارات في تصميم أي Backend آمن. الفكرة ببساطة:- السيستم بيضيف قيمة عشوائية سرية
- القيمة دي:
- موجودة جوه السيرفر
- مش باينة في الـ network
الخطوات:
- الباسورد يوصل للسيرفر
- يتضاف له salt
- يتعمله hashing
- الناتج يتخزن في الداتابيز
😎 طب الهاكر استفاد إيه لو شاف الهاش؟
ولا أي حاجة 🤷♂️ حتى لو:- لقّط request
- أو شاف hash في network
- نسخة من غير salt
- ومن غير إعدادات الخوارزمية
- ومن غير السياق الكامل
الهاكر ناقصه:
- ⚪ الباسورد الأصلي
- ⚪ الـ salt
- ⚪ الخوارزمية
- ⚪ إعدادات الخوارزمية
🐢 ليه بنستخدم خوارزميات بطيئة؟
إحنا مش بنستخدم أي hashing وخلاص.الخوارزميات الصح:
- bcrypt
- argon2
- scrypt
💣 يعني إيه Brute Force ببساطة؟
Brute Force يعني: “هجرب كل الاحتمالات الممكنة واحدة واحدة لحد ما واحدة تظبط”الخوارزميات دي مصممة إن:
- كل محاولة تكلف: وقت - فلوس - طاقة
🧩 مثال Backend بسيط (Node.js + bcrypt)
JavaScript:
const bcrypt = require('bcrypt');
const password = 'Rawan123!';
const saltRounds = 12;
const hash = await bcrypt.hash(password, saltRounds);
// وقت التحقق
const isValid = await bcrypt.compare(password, hash); ✅ الخلاصة
- الباسورد الحقيقي مش بيتخزن raw
- سرقة الهاش ≠ اختراق الحساب
- الأمان مش في الداتا
- الأمان في design السيستم
- مش أحدث تكنولوجيا
- لكن قرارات تصميم ذكية من الأول
