เหตุใดจึงต้องจัดเก็บรหัสผ่านของผู้ใช้
ฉันเห็นคำถามที่ถามวิธีการจัดเก็บรหัสผ่านผู้ใช้อย่างปลอดภัยสำหรับเว็บแอปพลิเคชัน (ใช้ RDBMS ฉันไม่ได้พูดถึง Facebook หรือ Twitter) คำตอบปกติคือ "ใส่รหัสผ่านแล้วแฮชด้วยอัลกอริทึมที่รัดกุมเช่น TDES หรือ SHA512" คำถามของฉันคือ: ในฐานะผู้ใช้ RDBMS เหตุใดฉันจึงต้องกังวลด้วยรหัสผ่านที่เก็บปัญหาได้เนื่องจากเอ็นจิ้นส่วนใหญ่มีกลไกการพิสูจน์ตัวตนในตัว ตัวอย่างเช่นหากผู้ใช้ X บางคนต้องการสร้างรหัสผ่านบัญชีผู้ใช้ Y ในเว็บแอปพลิเคชันของฉันวิธีการออกแบบสอบถามต่อไปนี้ไม่ถูกต้อง: CREATE USER X WITH ENCRYPTED PASSWORD Y IN GROUP baseuser; จากภายในแอปพลิเคชันของฉันผู้ใช้สามารถเปิดการเชื่อมต่อกับฐานข้อมูลโดยใช้ข้อมูลประจำตัวของเขาและฉันไม่ต้องกังวลกับการจัดการรหัสผ่านทั้งหมด ฉันเห็นข้อดีหลายประการสำหรับวิธีนี้: หาก RDBMS ตัดสินใจว่าจำเป็นต้องเปลี่ยนอัลกอริทึมการเข้ารหัสฉันไม่จำเป็นต้องแตะสิ่งใดเลยเพียงเพื่อใช้การปรับปรุงความปลอดภัย มันง่ายสำหรับฉันในการจัดการการอนุญาตผู้ใช้ หากผู้ใช้ได้รับการเลื่อนตำแหน่งเป็นบทบาทของผู้ดูแลระบบฉันแค่ต้องเพิ่มผู้ใช้ในกลุ่มที่เกี่ยวข้อง SQL injections นั้นไม่มีความหมายสำหรับฉันจัดการการอนุญาตให้อนุญาตสิ่งที่ฉันต้องการอนุญาตให้ผู้ใช้แต่ละรายในฐานข้อมูล (ตัวอย่างเช่นในฟอรัมเช่น SO, เพิ่มการโพสต์ใหม่, ตอบกระทู้, แสดงความคิดเห็นและแก้ไข / ลบคำถามของเขาเอง / คำตอบ …