คุณต้องไม่เก็บรหัสผ่านเป็นข้อความธรรมดาในขณะที่ยืนยันผู้ใช้หรือทำสิ่งที่คล้ายกัน
เนื่องจากบุคคลจำนวนมากใช้รหัสผ่านเดียวกัน หากผู้โจมตีพบฐานข้อมูลของรหัสผ่านที่ไม่ได้เข้ารหัส พวกเขาสามารถใช้ร่วมกับอีเมลที่ตรงกันเพื่อเข้าสู่เว็บไซต์หรือบัญชีที่เชื่อมโยง หรือแม้แต่ใช้เพื่อพยายามเข้าถึงบัญชีอื่น
รหัสผ่านมักจะถูกแฮชในวันนี้เมื่อมีการระบุรหัสผ่าน ขอแนะนำให้แฮชด้วยเกลือและเก็บเกลือไว้พร้อมกับรหัสผ่านที่แฮช
การใส่เกลืออาจดูเหมือนเป็นขั้นตอนหนึ่งในสูตรสำหรับแฮชบราวน์ แต่ในการเข้ารหัส หมายถึงการเพิ่มข้อมูลแบบสุ่มลงในอินพุตของฟังก์ชันแฮชเพื่อให้แน่ใจว่าแฮชจะให้ผลลัพธ์ที่ไม่ซ้ำกันเสมอแม้ว่าอินพุตจะเหมือนกันก็ตาม
ผลลัพธ์ที่ได้ก็คือ แฮชเฉพาะที่สร้างขึ้นโดยการเพิ่มเกลือสามารถปกป้องเราจากวิธีการโจมตีต่างๆ ได้ รวมถึงการโจมตีด้วยตารางแฮช ในขณะที่ยับยั้งพจนานุกรมและพยายามออฟไลน์แบบเดรัจฉาน
ที่นี่ ด้วยข้อมูลโค้ด เราจะสาธิตวิธีใช้ 'bcrypt' เพื่อรักษาความปลอดภัยรหัสผ่านของคุณ
ดังนั้น 'bcrypt' คืออะไร?
Bcrypt เป็นไลบรารีแฮชที่รองรับหลายภาษาและให้การเข้ารหัสรหัสผ่านพิเศษ เพื่อเพิ่มความปลอดภัยให้กับรหัสผ่านของคุณ รหัสผ่านจะสร้างอักขระสุ่มเพิ่มเติม (เกลือ) โดยอัตโนมัติเมื่อเข้ารหัสสตริงของคุณ
คุณยังสามารถเลือกกำหนดจำนวนอักขระเพิ่มเติมที่คุณต้องการเพิ่มลงในสตริงที่เข้ามาได้
ไลบรารี bcrypt อ่านเฉพาะโค้ดไบต์ ไม่ใช่สตริงดิบ ดังนั้น ก่อนส่งสตริงรหัสผ่านขาเข้าไปยัง bcrypt สำหรับการเข้ารหัส คุณต้องเข้ารหัสก่อน
การเข้ารหัสและการเข้ารหัสไม่ใช่สิ่งเดียวกัน มันแค่ทำให้แน่ใจว่าสตริงนั้นสามารถอ่านได้ด้วยเครื่องก่อนที่จะถูกปกปิดโดยเทคนิคการเข้ารหัส
การใช้ bcrypt เพื่อเข้ารหัสรหัสผ่านใน Python
Python ทำให้การเข้ารหัสรหัสผ่าน bcrypt เป็นเรื่องง่าย เราจะตั้งใจทำสิ่งนี้โดยปราศจากความช่วยเหลือจากกรอบงาน แต่อย่ากังวล หากคุณเข้าใจวิธีการบันทึกอินพุตของผู้ใช้และอ่านจากฐานข้อมูล ขั้นตอนจะเหมือนกันในเฟรมเวิร์ก
การติดตั้ง
คุณเพียงแค่ต้องตั้งค่าสภาพแวดล้อมเสมือนของ Python แล้วใช้ IDE เช่น PyCharm จะต้องติดตั้งไลบรารี่ก่อน:
การเข้ารหัสรหัสผ่าน
มาดูวิธีการใช้ bcrypt เพื่อเข้ารหัสข้อความหลังจากติดตั้งแล้ว:
รหัส Python ดังกล่าวดำเนินการและส่งออกสตริงไบต์ที่เข้ารหัส แต่ทุกครั้งที่คุณเรียกใช้สคริปต์ ผลลัพธ์จะแตกต่างออกไป Bcrypt ใช้วิธีนี้เพื่อให้แน่ใจว่าผู้ใช้ทุกคนมีรหัสผ่านที่เข้ารหัสโดยเฉพาะ
ที่บังเอิญสำหรับการเข้ารหัสรหัสผ่าน
การเปรียบเทียบและยืนยันรหัสผ่านโดยใช้ Bcrypt
จะเกิดอะไรขึ้นหากคุณต้องการบันทึกรหัสผ่านที่แฮชแล้วตรวจสอบในภายหลังเพื่อดูว่าตรงกับรหัสผ่านที่ผู้ใช้ส่งเพื่อตรวจสอบสิทธิ์หรือไม่
ที่ง่าย ต้องเปรียบเทียบเฉพาะรหัสผ่านที่พิสูจน์ตัวตนกับรายการของฐานข้อมูล (หรือในหน่วยความจำในกรณีนี้)
รหัสผ่านการตรวจสอบสิทธิ์ต้องได้รับการเข้ารหัสก่อนที่จะเปรียบเทียบกับรหัสผ่านในฐานข้อมูล เนื่องจาก bcrypt สามารถอ่านได้เฉพาะสตริงไบต์เท่านั้น โดยพื้นฐานแล้ว คุณจะเปรียบเทียบอินพุตการตรวจสอบสิทธิ์ที่เข้ารหัสกับรหัสผ่านที่แฮชเข้ารหัสที่คุณมีอยู่ในฐานข้อมูลของคุณในปัจจุบัน
มาทดสอบกันโดยใช้อินพุต Python ที่สมมติขึ้น:
เมื่อเรียกใช้รหัสดังกล่าว คุณจะได้รับพร้อมท์ให้ใส่รหัสผ่านใหม่ สิ่งนี้ถูกบันทึกไว้ในหน่วยความจำโดย Python ในส่วนการตรวจสอบสิทธิ์ คุณจะต้องป้อนรหัสผ่านเดียวกัน ซึ่งเป็นรหัสผ่านส่วนตัวของคุณ
หากเปรียบเทียบรหัสผ่านกับรหัสผ่านที่เคยเข้ารหัสและบันทึกการจับคู่ไว้ Python จะส่งข้อความแสดงความสำเร็จ
หากไม่เป็นเช่นนั้น ข้อความแสดงข้อผิดพลาดจะถูกพิมพ์ออกมา จากนั้นประโยค else จะถูกเพิ่มเข้าไป
แนวคิดพื้นฐานเหมือนกันกับการลงทะเบียนและการจัดหารหัสผ่านไปยังฐานข้อมูลสำหรับการตรวจสอบสิทธิ์
สรุป
แม้ว่าเราจะใช้รหัสผ่านที่เข้ารหัสเพื่อแสดงให้เห็นว่า bcrypt ทำงานอย่างไรในหน่วยความจำ Python แบบสั้น การบังคับใช้จริงนั้นอยู่ในแอปฐานผู้ใช้
อย่างไรก็ตาม บทความนี้จะสาธิตวิธีการที่จำเป็นในการจัดระเบียบโค้ดของคุณเพื่อให้บรรลุเป้าหมาย แม้ในสถานการณ์จริง
ตัวอย่างเช่น หากคุณใช้ Flask คุณสามารถระบุฟิลด์การลงทะเบียนและการรับรองความถูกต้องผ่านแบบฟอร์มเว็บแยกต่างหากแทนการป้อนข้อมูล
แน่นอน ในขณะที่เปรียบเทียบรหัสผ่าน คุณจะอ่านจากฐานข้อมูลที่มีรหัสผ่านที่เข้ารหัสซึ่งเก็บไว้ในโลกแห่งความเป็นจริง
โจนา นิทช์
ขอบคุณสำหรับคำอธิบายที่เรียบง่ายและเรียบง่ายนี้
สิ่งนี้ช่วยฉันได้มากในโครงการปัจจุบันของฉัน
ฉันคิดว่าเป็นเรื่องดีมากที่โค้ดตัวอย่างถูกจำกัดให้เหลือน้อยที่สุดและไม่มีการโอเวอร์โหลดเหมือนคำอธิบายอื่นๆ มากมาย
ด้วยความเคารพ