אחת הדרכים הטובות ביותר לאחסן סיסמאות בצורה מאובטחת היא להמלח ולחטא אותן. המלחה וגיבוב ממירים סיסמה פשוטה לערך ייחודי שקשה להפוך אותו. ספריית bcrypt מאפשרת לך hash ומלח סיסמאות ב-Node.js עם מעט מאוד מאמץ.

מהו גיבוש סיסמה?

גיבוב סיסמא פירושו העברת סיסמת טקסט רגיל דרך אלגוריתם גיבוב ליצירת ערך ייחודי. כמה דוגמאות לאלגוריתמי גיבוב הן bcrypt, scrypt ו-SHA. החיסרון של hashing הוא שהוא צפוי.

בכל פעם שאתה מעביר את אותו קלט לאלגוריתם גיבוב, הוא יפיק את אותו פלט. האקר עם גישה לסיסמה הגובבת יכול לבצע הנדסה לאחור של ההצפנה כדי לקבל את הסיסמה המקורית. הם עשויים להשתמש בטכניקות כגון התקפות בכוח גס או שולחנות קשת בענן. כאן נכנסת לתמונה המלחה.

מהי המלחת סיסמאות?

המלחת סיסמאות מוסיף מחרוזת אקראית (המלח) לסיסמה לפני הגיבוב שלה. בדרך זו, ה-hash שנוצר תמיד יהיה שונה בכל פעם. גם אם האקר משיג את הסיסמה המגובבת, זה לא מעשי עבורו לגלות את הסיסמה המקורית שיצרה אותה.

כיצד להשתמש ב-bcrypt ל-Hash ולאמת סיסמה

bcrypt הוא מודול npm שמפשט המלחת סיסמאות וגיבוב.

שלב 1: התקן את bcrypt

שימוש ב-npm:

npm להתקין bcrypt

שימוש בחוט:

חוט להוסיף bcrypt
instagram viewer

שלב 2: ייבוא ​​bcrypt

const bcrypt = לִדרוֹשׁ("bcrypt")

שלב 3: צור מלח

כדי ליצור את המלח, התקשר ל- bcrypt.genSalt() שיטה. שיטה זו מקבלת ערך מספר שלם שהוא גורם העלות שקובע את הזמן שנדרש לגיבוב סיסמה. ככל שגורם העלות גבוה יותר, כך לוקח יותר זמן לאלגוריתם וקשה יותר להפוך את ה-hash באמצעות כוח גס. ערך טוב צריך להיות גבוה מספיק כדי לאבטח את הסיסמה אבל גם נמוך מספיק כדי לא להאט את התהליך. זה בדרך כלל נע בין 5 ל-15. במדריך זה, נשתמש ב-10.

bcrypt.genSalt (10, (שגה, מלח) => {
// להשתמשמלחלבְּלִילסיסמה
})

שלב 4: גיבש את הסיסמה

העבר את הסיסמה הפשוטה ואת המלח שנוצר ל- בְּלִיל() שיטה:

bcrypt.genSalt (10, (שגה, מלח) => {
bcrypt.hash (plaintextPassword, מלח, פוּנקצִיָה(טעות, חשיש) {
// אחסן hash במסד הנתונים
});
})

לאחר שיצרת את ה-hash, אחסן אותו במסד הנתונים. אתה תשתמש בו כדי לאמת סיסמה ולאמת משתמש שמנסה להיכנס.

במקום ליצור את המלח וה-hash בנפרד, אתה יכול גם ליצור אוטומטית את המלח וה-hash באמצעות פונקציה אחת.

bcrypt.hash (plaintextPassword, 10, פוּנקצִיָה(טעות, חשיש) {
// אחסן hash במסד הנתונים
});

שלב 5: השווה סיסמאות באמצעות bcrypt

ל לאמת משתמשים, תצטרך להשוות את הסיסמה שהם מספקים לזו שבבסיס הנתונים. bcrypt.compare() מקבל את סיסמת הטקסט הפשוט ואת ה-hash ששמרת, יחד עם פונקציית התקשרות חוזרת. התקשרות חוזרת זו מספקת אובייקט המכיל שגיאות שהתרחשו, ואת התוצאה הכוללת מההשוואה. אם הסיסמה תואמת ל-hash, התוצאה נכונה.

bcrypt.compare (plaintextPassword, hash, פוּנקצִיָה(טעות, תוצאה) {
אם (תוצאה) {
// הסיסמה תקפה
}
});

שימוש ב-Async/Await

אתה יכול לגיבוב ולאמת סיסמאות באמצעות async/wait כדלקמן.

אסינכרוןפוּנקצִיָהhashPassword(סיסמה רגילה) {
const hash = לְהַמתִין bcrypt.hash (plaintextPassword, 10);
// אחסן hash במסד הנתונים
}

// השווה סיסמה
אסינכרוןפוּנקצִיָההשווהPassword(plaintextPassword, hash) {
const תוצאה = לְהַמתִין bcrypt.compare (plaintextPassword, hash);
לַחֲזוֹר תוֹצָאָה;
}

שימוש בהבטחות

ספריית bcrypt תומכת גם בשימוש בהבטחות.

פוּנקצִיָהhashPassword(סיסמה רגילה) {
bcrypt.בְּלִיל(סיסמה רגילה, 10)
.then (hash => {
// אחסן hash במסד הנתונים
})
.לתפוס(שגיאה => {
לְנַחֵם.log (שגיאה)
})
}

פוּנקצִיָההשווהPassword(plaintextPassword, hash) {
bcyrpt.לְהַשְׁווֹת(סיסמה רגילה, בְּלִיל)
.then (תוצאה => {
לַחֲזוֹר תוֹצָאָה
})
.לתפוס(שגיאה => {
לְנַחֵם.log (שגיאה)
})
}

גיבוב והמלחה היא ניצחון קל

אתה יכול להשתמש בספריית bcrypt כדי לגיבוב ולאמת סיסמאות ב-Node.js. גיבוב סיסמאות ממזער את הסיכויים של פושעי סייבר להשתמש בהן כדי לגשת לנתונים או שירותים רגישים. המלחת סיסמאות הגיבוב שלך הופכת אותן לאבטחות עוד יותר. מלבד hashing, אמת תמיד את חוזק הסיסמה כאמצעי אבטחה נוסף.

8 הטריקים הנפוצים ביותר המשמשים לפריצת סיסמאות

קרא הבא

לַחֲלוֹקצִיוּץלַחֲלוֹקאימייל

נושאים קשורים

  • תִכנוּת
  • בִּטָחוֹן
  • תִכנוּת
  • JavaScript
  • בִּטָחוֹן
  • אלגוריתמים

על הסופר

מרי גאתוני (21 מאמרים שפורסמו)

מרי גאתוני היא מפתחת תוכנה עם תשוקה ליצור תוכן טכני שהוא לא רק אינפורמטיבי אלא גם מרתק. כשהיא לא מקודדת או כותבת, היא נהנית לבלות עם חברים ולהיות בחוץ.

עוד ממרי גאתוני

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחץ כאן כדי להירשם