3.9 KiB
3.9 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
58a25c98f9fc0f352b528e7f | Hashing Your Passwords | 2 | تجزئة كلمات المرور الخاصة بك |
Description
إضافة 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