ทรอยล่าทำให้จุดที่ดีบางอย่างในบทความของเขาทุกสิ่งที่คุณอยากรู้เกี่ยวกับการสร้างคุณลักษณะการรีเซ็ตรหัสผ่านที่ปลอดภัย ข้อความที่ตัดตอนมาที่เกี่ยวข้องมากที่สุดคือ:
[T] ต่อไปนี้เป็นวิธีการทั่วไปสองวิธี:
- สร้างรหัสผ่านใหม่บนเซิร์ฟเวอร์และส่งอีเมล
- ส่งอีเมล URL ที่ไม่ซ้ำซึ่งจะช่วยในการรีเซ็ต
แม้จะมีคำแนะนำมากมายในทางตรงกันข้ามประเด็นแรกไม่ใช่ที่เราต้องการ ปัญหาในการทำเช่นนี้ก็คือมันหมายถึงรหัสผ่านที่ถาวรซึ่งคุณสามารถกลับไปใช้และใช้งานได้ทุกเวลาตอนนี้ได้ถูกส่งผ่านช่องทางที่ไม่ปลอดภัยและอยู่ในกล่องจดหมายของคุณแล้ว
...
แต่มีปัญหาใหญ่อีกข้อหนึ่งกับวิธีแรกที่ทำให้การล็อคบัญชีที่เป็นอันตรายนั้นง่าย หากฉันรู้ที่อยู่อีเมลของใครบางคนที่เป็นเจ้าของบัญชีในเว็บไซต์จากนั้นฉันสามารถล็อคพวกเขาออกจากมันทุกครั้งที่ฉันโปรดเพียงแค่รีเซ็ตรหัสผ่าน; มันปฏิเสธการโจมตีบริการเสิร์ฟบนจานเงิน! นี่คือสาเหตุที่การรีเซ็ตเป็นสิ่งที่ควรเกิดขึ้นหลังจากตรวจสอบสิทธิ์ของผู้ร้องขอเรียบร้อยแล้ว
เมื่อเราพูดถึง URL รีเซ็ตเรากำลังพูดถึงที่อยู่เว็บไซต์ที่ไม่ซ้ำกับอินสแตนซ์เฉพาะของกระบวนการรีเซ็ต
...
สิ่งที่เราต้องการทำคือสร้างโทเค็นที่ไม่ซ้ำกันซึ่งสามารถส่งในอีเมลโดยเป็นส่วนหนึ่งของ URL รีเซ็ตจากนั้นจับคู่กลับไปที่ระเบียนบนเซิร์ฟเวอร์พร้อมกับบัญชีผู้ใช้ดังนั้นการยืนยันว่าเจ้าของบัญชีอีเมลนั้นเป็นผู้พยายามรีเซ็ต รหัสผ่าน ตัวอย่างเช่นโทเค็นอาจเป็น“ 3ce7854015cd38c862cb9e14a1ae552b” และถูกเก็บไว้ในตารางข้างๆ ID ของผู้ใช้ที่ทำการรีเซ็ตและเวลาที่โทเค็นถูกสร้างขึ้น (เพิ่มเติมในอีกสักครู่) เมื่ออีเมลถูกส่งออกจะมี URL เช่น“ รีเซ็ต /? id = 3ce7854015cd38c862cb9e14a1ae552b” และเมื่อผู้ใช้โหลดหน้านี้จะตรวจสอบโทเค็นและยืนยันรหัสประจำตัวของผู้ใช้ อาจมีการเปลี่ยนแปลง
...
อีกสิ่งหนึ่งที่เราต้องการทำกับ URL การตั้งค่าใหม่คือการ จำกัด เวลาโทเค็นเพื่อให้กระบวนการรีเซ็ตต้องเสร็จสิ้นภายในระยะเวลาที่กำหนดกล่าวภายในหนึ่งชั่วโมง
...
สุดท้ายเราต้องการให้แน่ใจว่านี่เป็นกระบวนการแบบครั้งเดียว เมื่อกระบวนการรีเซ็ตเสร็จสมบูรณ์โทเค็นควรถูกลบเพื่อให้ URL รีเซ็ตไม่ทำงานอีกต่อไป เช่นเดียวกับประเด็นก่อนหน้านี้เพื่อให้มั่นใจว่าผู้โจมตีมีหน้าต่างที่ จำกัด มากซึ่งพวกเขาสามารถใช้ URL ที่รีเซ็ตในทางที่ผิด นอกจากนี้ยังไม่จำเป็นต้องใช้โทเค็นอีกต่อไปหากกระบวนการรีเซ็ตเสร็จสมบูรณ์
เขาให้คะแนนที่ดีมากขึ้นเกี่ยวกับการหลีกเลี่ยงการรั่วไหลของข้อมูล CAPTCHA การตรวจสอบสิทธิ์แบบสองปัจจัยและแน่นอนแนวทางปฏิบัติขั้นพื้นฐานที่ดีที่สุดเช่นการแฮ็กรหัสผ่าน ฉันคิดว่าเป็นเรื่องสำคัญที่จะต้องทราบว่าฉันไม่เห็นด้วยกับทรอยเกี่ยวกับประโยชน์ของคำถามเพื่อความปลอดภัยโดยเลือกที่จะสงสัยการปฏิบัติของบรูซชไนเออร์ :
จุดคำถามเหล่านี้เหมือนกันคือ: รหัสผ่านสำรอง หากคุณลืมรหัสผ่านคำถามลับสามารถยืนยันตัวตนของคุณเพื่อให้คุณสามารถเลือกรหัสผ่านอื่นหรือให้ไซต์ส่งรหัสผ่านปัจจุบันของคุณถึงคุณ มันเป็นความคิดที่ดีจากมุมมองการบริการลูกค้า - ผู้ใช้มีโอกาสน้อยที่จะลืมชื่อสัตว์เลี้ยงตัวแรกของเขามากกว่ารหัสผ่านแบบสุ่ม - แต่น่ากลัวสำหรับความปลอดภัย คำตอบของคำถามลับนั้นคาดเดาได้ง่ายกว่ารหัสผ่านที่ดีมากและข้อมูลสาธารณะก็มีมากขึ้น