תוכן העניינים[להתחבא][הופעה]
לעולם אסור לשמור סיסמה בטקסט רגיל בזמן אישור משתמש או ביצוע משהו דומה.
מכיוון שאנשים רבים משתמשים באותה סיסמה, אם תוקף מגלה מסד נתונים של סיסמאות לא מוצפנות, ניתן להשתמש בהן בקלות בשילוב עם הודעות דוא"ל תואמות כדי להיכנס לאתר או לחשבון המקושרים ואף להשתמש בהן כדי לנסות לגשת לחשבונות אחרים.
סיסמאות מועברות לעתים קרובות כיום כאשר סיסמה מסופקת. מומלץ לגיבוב עם מלח ולשמור את המלח יחד עם הסיסמה המגובבת.
המלחה עשויה להיראות כאחד השלבים במתכון ל-hash browns, אבל בקריפטוגרפיה, היא מתייחסת להוספת נתונים אקראיים לקלט של פונקציית Hash כדי להבטיח שה-hash תמיד יספק תוצאה ייחודית גם אם הקלטות זהות.
כתוצאה מכך, ה-hash הייחודי שנוצר על ידי הוספת המלח יכול להגן עלינו מכמה שיטות התקפה, כולל תקיפות של טבלאות גיבוב, תוך חניקת מילון וניסיונות לא מקוונים בכוח גס.
כאן, בעזרת קטעי קוד, נדגים כיצד להשתמש ב-'bcrypt' כדי לאבטח את הסיסמאות שלך.
אז מה זה 'bcrypt'?
Bcrypt היא ספריית גיבוב התומכת במספר שפות ומספקת הצפנת סיסמה מיוחדת. כדי להגביר את האבטחה של הסיסמה שלך, היא מייצרת אוטומטית תווים אקראיים נוספים (מלח) בעת הצפנת המחרוזת שלך.
אתה יכול גם לבחור להגדיר כמה תווים נוספים ברצונך להוסיף למחרוזת נכנסת.
ספריית bcrypt קוראת רק קוד בתים, לא מחרוזות גולמיות. לכן, לפני שליחת מחרוזת סיסמה נכנסת ל-bcrypt להצפנה, תחילה עליך לקודד אותה.
הצפנה וקידוד הם לא אותם דברים. זה רק מוודא שהמחרוזת ניתנת לקריאה במכונה לפני שהיא מכוסה על ידי טכניקת הצפנה.
שימוש ב-bcrypt כדי להצפין סיסמה ב-Python
Python הופך את הצפנת סיסמת bcrypt לפשוטה. נתרכז בכך ללא סיוע של מסגרת. אבל אל דאגה, אם אתה מבין איך לשמור קלט של משתמשים ולקרוא אותם ממסד הנתונים, ההליך זהה במסגרות.
הַתקָנָה
אתה רק צריך להגדיר סביבה וירטואלית של Python ולאחר מכן להשתמש ב-IDE כמו PyCharm. לאחר מכן יש להתקין תחילה את הספרייה:
הצפנת סיסמה
בואו נראה כיצד להשתמש ב-bcrypt כדי להצפין טקסט לאחר התקנתו:
קוד Python שהוזכר לעיל מבצע ומוציא מחרוזת בתים מוצפנת. אבל בכל פעם שאתה מפעיל את הסקריפט, התוצאה שונה. Bcrypt משתמשת בשיטה זו כדי לוודא שלכל משתמש יש סיסמה מוצפנת ספציפית.
זה, אגב, להצפנת סיסמה.
השוואה ואישור סיסמאות באמצעות Bcrypt
מה קורה אם ברצונך לשמור את הסיסמה הגובבת ולבדוק מאוחר יותר אם היא תואמת לסיסמה שמשתמש שלח לאימות?
זה פשוט. יש להשוות רק את סיסמת האימות לערך של מסד הנתונים (או בזיכרון במקרה זה).
גם סיסמת האימות חייבת להיות מקודדת לפני ההשוואה לזו שבבסיס הנתונים מכיוון ש-bcrypt יכולה לקרוא רק מחרוזות בתים. בעיקרון, אתה תשווה קלט אימות מקודד לסיסמת הגיבוב המקודדת שיש לך כרגע במסד הנתונים שלך.
בואו נבדוק זאת על ידי שימוש בכניסות פייתון פיקטיביות:
עם הפעלת הקוד הנ"ל, תתבקש להזין סיסמה חדשה. זה נשמר בזיכרון על ידי Python. בקטע האימות, לאחר מכן תזין את אותה סיסמה, שהיא פרטית עבורך.
אם משווים את הסיסמה לזו שהוצפנה בעבר ושמרה את ההתאמה, Python משדר הודעת הצלחה.
אם לא, הודעת השגיאה מודפסת ואז נוסף המשפט האחר.
הרעיון הבסיסי זהה לזה של רישום ולאחר מכן אספקת סיסמה למסד נתונים לצורך אימות.
סיכום
אפילו אם פשוט השתמשנו בסיסמאות מוצפנות כדי להראות כיצד bcrypt מתפקד בזיכרון קצר רגיל של Python, ישימותו בפועל טמונה ביישומים מבוססי משתמש.
עם זאת, מאמר זה מדגים את השיטות החיוניות לארגון הקוד שלך כדי להשיג זאת, אפילו בנסיבות אמיתיות.
לדוגמה, אם אתה משתמש ב-Flask, אתה יכול לספק את שדות הרישום והאימות באמצעות טפסי אינטרנט נפרדים במקום קלט.
כמובן שבזמן השוואת סיסמאות, תקראו ממסד נתונים המכיל סיסמאות מוצפנות שנשמרות בעולם האמיתי.
יונה ניטש
תודה על ההסבר הפשוט והפשוט הזה,
זה עזר לי מאוד בפרויקט הנוכחי שלי.
אני חושב שזה טוב מאוד שהקוד לדוגמה מוגבל למינימום ולא עמוס כמו כל כך הרבה הסברים אחרים.
ד 'ש