freeCodeCamp/curriculum/challenges/arabic/06-information-security-and.../advanced-node-and-express/hashing-your-passwords.arab...

3.9 KiB

id title challengeType videoUrl localeTitle
58a25c98f9fc0f352b528e7f Hashing Your Passwords 2 تجزئة كلمات المرور الخاصة بك

Description

وللتذكير ، يجري بناء هذا المشروع على المشروع المبدئي التالي في Glitch ، أو مستنسخ من GitHub . وبالرجوع إلى قسم أمن المعلومات ، قد تتذكر أن تخزين كلمات مرور نص عادي ليس مقبولًا أبدًا . الآن حان الوقت لتنفيذ BCrypt لحل هذه المشكلة.
إضافة BCrypt كاعتمادية وتطلبها في الخادم الخاص بك. ستحتاج إلى معالجة التجزئة في مجالين رئيسيين: حيث يمكنك التعامل مع تسجيل / حفظ حساب جديد وعند التحقق من صحة كلمة المرور عند تسجيل الدخول. حاليًا على مسار التسجيل الخاص بنا ، تقوم بإدراج كلمة مرور المستخدم في قاعدة البيانات كما يلي: password: req.body.password . طريقة سهلة لتطبيق تجزئة بدلاً من ذلك هو إضافة ما يلي قبل منطق قاعدة البيانات var hash = bcrypt.hashSync(req.body.password, 12); واستبدال req.body.password في حفظ قاعدة البيانات password: hash . وأخيرًا في إستراتيجية المصادقة الخاصة بنا ، نتحقق مما يلي في الكود الخاص بنا قبل إتمام العملية: if (password !== user.password) { return done(null, false); } . بعد إجراء التغييرات السابقة ، الآن user.password هو تجزئة. قبل إجراء تغيير على التعليمات البرمجية الموجودة ، لاحظ كيف يتم التحقق من العبارة إذا كانت كلمة المرور غير مساوية ثم إرجاع غير مصادقة. مع وضع هذا في الاعتبار يمكن أن تبدو التعليمات البرمجية الخاصة بك كما يلي للتحقق بشكل صحيح كلمة المرور التي تم إدخالها مقابل التجزئة: if (!bcrypt.compareSync(password, user.password)) { return done(null, false); } هذا هو كل ما يتطلبه الأمر لتنفيذ أحد أهم ميزات الأمان عندما يكون عليك تخزين كلمات المرور! أرسل صفحتك عندما تظن أنك على صواب.

Instructions

Tests

tests:
  - text: BCrypt هو التبعية
    testString: ' getUserInput => $.get(getUserInput("url")+ "/_api/package.json") .then(data => { var packJson = JSON.parse(data); assert.property(packJson.dependencies, "bcrypt", "Your project should list "bcrypt" as a dependency"); }, xhr => { throw new Error(xhr.statusText); })'
  - text: BCrypt المطلوبة بشكل صحيح وتنفيذها
    testString: 'getUserInput => $.get(getUserInput("url")+ "/_api/server.js") .then(data => { assert.match(data, /require.*("|")bcrypt("|")/gi, "You should have required bcrypt"); assert.match(data, /bcrypt.hashSync/gi, "You should use hash the password in the registration"); assert.match(data, /bcrypt.compareSync/gi, "You should compare the password to the hash in your strategy"); }, xhr => { throw new Error(xhr.statusText); })'

Challenge Seed

Solution

// solution required