[ دورة PHPSEC ] تشفير الكلمات السرية [ الدرس 4/10 ]
ط·آ·ط¢آ¢ط·آ·ط¢آ®ط·آ·ط¢آ±
ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ·ط¢آµط·آ¸ط¸آ¾ط·آ·ط¢آ­ط·آ·ط¢آ©
Numbr7s

  • ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ¸أ¢â‚¬آ¦ط·آ·ط¢آ´ط·آ·ط¢آ§ط·آ·ط¢آ±ط·آ¸ط¦â€™ط·آ·ط¢آ§ط·آ·ط¹آ¾: 3544
    ط·آ¸أ¢â‚¬آ ط·آ¸أ¢â‚¬ع‘ط·آ·ط¢آ§ط·آ·ط¢آ· ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ·ط¹آ¾ط·آ¸أ¢â‚¬آ¦ط·آ¸ط¸آ¹ط·آ·ط¢آ²: 2629
مشرف سابق
Numbr7s

مشرف سابق
ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ¸أ¢â‚¬آ¦ط·آ·ط¢آ´ط·آ·ط¢آ§ط·آ·ط¢آ±ط·آ¸ط¦â€™ط·آ·ط¢آ§ط·آ·ط¹آ¾: 3544
ط·آ¸أ¢â‚¬آ ط·آ¸أ¢â‚¬ع‘ط·آ·ط¢آ§ط·آ·ط¢آ· ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ·ط¹آ¾ط·آ¸أ¢â‚¬آ¦ط·آ¸ط¸آ¹ط·آ·ط¢آ²: 2629
ط·آ¸أ¢â‚¬آ¦ط·آ·ط¢آ¹ط·آ·ط¢آ¯ط·آ¸أ¢â‚¬â€چ ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ¸أ¢â‚¬آ¦ط·آ·ط¢آ´ط·آ·ط¢آ§ط·آ·ط¢آ±ط·آ¸ط¦â€™ط·آ·ط¢آ§ط·آ·ط¹آ¾ ط·آ¸ط¸آ¹ط·آ¸ط«â€ ط·آ¸أ¢â‚¬آ¦ط·آ¸ط¸آ¹ط·آ·ط¢آ§: 1.2
ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ·ط¢آ£ط·آ¸ط¸آ¹ط·آ·ط¢آ§ط·آ¸أ¢â‚¬آ¦ ط·آ¸أ¢â‚¬آ¦ط·آ¸أ¢â‚¬آ ط·آ·ط¢آ° ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ·ط¢آ¥ط·آ¸أ¢â‚¬آ ط·آ·ط¢آ¶ط·آ¸أ¢â‚¬آ¦ط·آ·ط¢آ§ط·آ¸أ¢â‚¬آ¦: 2923
  • 00:15 - 2017/11/17

السلام عليكم ورحمة الله وبركاته ، 

أهلا بكم إخواني الكرام في درس جديد في الدورة الخاصة بتعلم الحماية ، إن شاء الله في هدا الدرس سنتطرق إلى موضوع الPassword hashing ، 

وهو من الأشياء الجد المهمة في الحماية ، فصراحة هناك الكتير من الكلمات السرية التي تتعرض إلى الBrute force بشكل سهل جدا ، وأقصد بالدكر التشفيرات الضعيفة ، كMd5

فحاليا هناك العديد من المواقع التي تكرس كل وقتها في فك هده الشفرات وعمل قاعدة بيانات للكلمات السرية المفككة ولدلك يمكن أن يكون باسوردك ضمن تلك القاعدة ، الأن في هدا الدرس سنشاهد الطريقة التقليدية التي يتم بها التشفير ، واقصد بدلك إستعمال الmd5 ، تم بعدها سنشاهد كيف نستعمل بعض الدوال التي توفرها لنا البي إتش بي بشكل أكثر أمان و أكثر تعقيد ، كملاحظة بخصوص الدوال التي سنستعملها فهناك مرفق للدرس به تلك الدوال وقد قمت بوضع Password Hashing wrapper في نفس الوقت لمبرمجين والمطورين بالبرمجة الكائنية التوجه ، لدلك يمكنكم زيارته لمعلومات أكثر.

 

 

الرابط :http://www.startimes.com/f.aspx?t=37084609

 

الأن نمر للدرس ، نقوم بعمل ملف php عادي كالتالي :

 

 

كما ترون فوق عملنا متغير يحمل قيمة الكلمة السرية ، سندعي أنها كلمة سرية أتت من الزائر الدي يريد أن يسجل عضويته بموقعك ، تم نقوم بعمل echo لها ، لندعي أننا نقوم بإدخالها لقاعدة البيانات ، عادةََ نقوم بعمل تشفير لها ، لدلك لنعمل التشفير ، والدي سيكون كالتالي :

 

 

الأن نرى النتيجة في المتصفح :

 

كما ترون تم التشفير بنجاح تام ، الأن كما قلت لكم تشفير md5 يعد من التشفيرات الضعيفة حاليا ويسهل فكه ، لنجرب فك هدا الباسورد في مواقع لفك التشفير ،

 

ندخل التشفير ونرى النتيجة :

 

 

للأسف تم فك التشفير بسهولة تامة يعني في حوالي 223m/s .. هدا يدل على مدى ضعف التشفير للأسف ، الأن عرفنا كيف أن هدا التشفير ضعيف وسهل فكه ، لنرى كيف نقوم بوضع باسوورد جد محمي ، مقارنة مع الmd5 ، سنستعمل في هدا الدرس دالة password_hash ، والتي تقبل تلات بارامترات كالتالي :

 

 

الأول يخص الباسوررد المراد التشفيره ، وفي هده الحالة لدينا هو المتغير $password ، بخصوص ال$algo ، إختصارا للوغاريثم ، وهنا في بي إتش بي لدينا فقط إثنتين ، الأول وهو :

PASSWORD_DEFAULT 

والثاني هو : 

PASSWORD_BCRYPT 

 

بخصوص الأول فالحروف يمكن أن تكون أكثر من 60 حرفا ، لدلك  راعوا الأمر في عملية صنع  حقل الباسوورد ، اما اللوغاريثم الثانية فتقبل 60 حرفا بالتحديد ، 

 

أما بخصوص البارامتر الثالت ، وهو الأخير فهو الOptions هناك ، إثنين الأول وهو الsalt والدي لن نستعمله ، فقد تم حدفه في php7 والثاني هو الcost ، والدي يدل على مدى صعوبة فك التشفير كلما كان الرقم أكبر كلما كان فك تشفيره أصعب  ، ولكنه إن كان الرقم كبيرا يحصل تقل على السكربت .

 

الأن لنطبق الأمر في سكربتنا ،

 

 

نرى النتيجة في المتصفح :

 

 

بخصوص السهم في أقصى اليسار يدل على اللوغاريثم التي حددناها ، أقصد بهدا دلك الconst ، الدي إسمه PASSWORD_BCRYPT ،

 

أما بخصوص السهم الثاني فهو يخص الcost كما ترون تم طباعة 12 ، الأن لنجرب شكل تاني يخص التشفير ، اقصد بهدا PASSWORD_DEFAULT

 

 

النتيجة :

 

 

جميل ، الأن تعرفنا على طريقة التشفير الأن نمر لطريقة فك التشفير ، نرجع اللوغاريثم كما كانت ، أفضل :

 

 

الأن نستعمل دالة أخرى وهي دالة الpassword_verfiy ، اولا لنحتفظ بدلك الهاش الدي قمنا بتشفيره ونضعه في متغير تم نستعمل دالة التحقق والتي هي password_verify ، 

 

 

الأن لنستعمل الدالة ، الدالة جد بسيطة صراحة ، سوف ترون :

 

 

الدالة فوق تقبل بارامترين واحد وهو الباسورد المراد التحقق به ، والبارامتر الثاني وهو الباسورد المشفر ، الدالة ترجع boolean ، ما أقصده بدلك ، إن كان صحيح يرجع true وبدلك يتحقق الشرط ، إن كان خاطئا يرجع false وبدلك لا يتحقق الشرط ، لنرى النتيجة في المتصفح الأن :

 

 

كما ترون تم التحقق والرجوع بقيمة true ، ولدلك تحقق الشرط وطبع لنا بأن الباسورد صحيح ، الأن لنغير الباسورد ، كما قلت في بداية الدرس نحن نتوهم بأن الباسورد هو مُدخل من طرف زائر يريد تسجيل الدخول بعضويته مثلا ، لدلك لنجرب أنه أدخل باسورد خاطئ ونرى النتيجة :


 

الأن نرى النتيجة :

 

 

كما ترون لقد تعرف على أن الباسورد خاطئ لدلك أرجع لنا قيمة false وبالتالي لم يتحقق الشرط وطبع لنا أن الكلمة السرية خاطئة ،

 

إلى هنا إخواني الكرام ينتهي درسنا ، نلتقي في درس أخر إن شاء الله 

 

تــــحياتي اخوكم في الله هشام 

 [ دورة PHPSEC ] تشفير الكلمات السرية [ الدرس 4/10 ]
ط·آ·ط¢آ¨ط·آ·ط¢آ¯ط·آ·ط¢آ§ط·آ¸ط¸آ¹ط·آ·ط¢آ©
ط·آ·ط¢آ§ط·آ¸أ¢â‚¬â€چط·آ·ط¢آµط·آ¸ط¸آ¾ط·آ·ط¢آ­ط·آ·ط¢آ©