คุณรักษาแอปพลิเคชันที่มีอยู่ด้วยฐานผู้ใช้ที่สร้างไว้แล้ว เมื่อเวลาผ่านไปมีการตัดสินใจว่าเทคนิคการแฮ็กรหัสผ่านปัจจุบันล้าสมัยและจำเป็นต้องอัพเกรด นอกจากนี้สำหรับเหตุผล UX คุณไม่ต้องการให้ผู้ใช้ปัจจุบันถูกบังคับให้อัปเดตรหัสผ่านของพวกเขา การอัพเดตการแฮชรหัสผ่านทั้งหมดต้องเกิดขึ้นหลังหน้าจอ
สมมติว่าฐานข้อมูล 'ง่าย' สำหรับผู้ใช้ที่มี:
- ID
- อีเมล์
- รหัสผ่าน
วิธีการหนึ่งที่จะแก้ไขข้อกำหนดดังกล่าวได้อย่างไร
ความคิดปัจจุบันของฉันคือ:
- สร้างวิธีการแฮ็กใหม่ในชั้นเรียนที่เหมาะสม
- อัพเดตตารางผู้ใช้ในฐานข้อมูลเพื่อเก็บฟิลด์รหัสผ่านเพิ่มเติม
- เมื่อผู้ใช้เข้าสู่ระบบสำเร็จโดยใช้แฮรหัสผ่านที่ล้าสมัยแล้วให้กรอกฟิลด์รหัสผ่านที่สองด้วยแฮชที่อัปเดต
สิ่งนี้ทำให้ฉันมีปัญหาที่ฉันไม่สามารถแยกความแตกต่างที่สมเหตุสมผลระหว่างผู้ใช้ที่มีและผู้ที่ไม่ได้อัพเดตแฮชรหัสผ่านของพวกเขาและจะถูกบังคับให้ตรวจสอบทั้งสองอย่าง ดูเหมือนว่ามีข้อบกพร่องอย่างน่ากลัว
นอกจากนี้โดยทั่วไปหมายความว่าเทคนิคการแปลงแป้นพิมพ์แบบเก่าอาจถูกบังคับให้อยู่ต่อไปเรื่อย ๆ จนกว่าผู้ใช้ทุกคนจะอัปเดตรหัสผ่านของตน ในขณะนั้นฉันสามารถเริ่มลบการตรวจสอบการแฮชเก่าและลบฟิลด์ฐานข้อมูลฟุ่มเฟือย
ฉันกำลังมองหาเคล็ดลับการออกแบบที่นี่เป็นส่วนใหญ่เนื่องจาก 'โซลูชัน' ปัจจุบันของฉันสกปรกไม่สมบูรณ์และไม่มีอะไร แต่ถ้าต้องการรหัสจริงเพื่ออธิบายวิธีแก้ไขที่เป็นไปได้อย่าลังเลที่จะใช้ภาษาใด ๆ