การแฮชรหัสผ่านและการสนับสนุนผู้ใช้ของคุณ


10

เมื่อเร็ว ๆ นี้เราได้ย้ายไปใช้กลยุทธ์การจัดเก็บรหัสผ่านที่ดีขึ้นด้วยสิ่งที่ดีทั้งหมด:

  • รหัสผ่านจะถูกเก็บไว้หลังจากผ่าน bCrypt
  • ผู้ใช้จะได้รับลิงค์เปิดใช้งานในการสร้างบัญชีเพื่อยืนยันความเป็นเจ้าของที่อยู่
  • ลืมรหัสผ่านโดยไม่มีคำถามเพื่อความปลอดภัยลิงค์จะถูกส่งไปยังอีเมลของพวกเขา
  • ลิงค์จะหมดอายุหลังจาก 24 ชั่วโมง ณ จุดที่พวกเขาจะต้องขอใหม่
  • หากบัญชีถูกสร้างขึ้นจากพนักงานของเราอีเมลจะถูกส่งด้วยรหัสผ่านที่รัดกุมแบบสุ่ม เมื่อเข้าสู่ระบบในผู้ใช้จะต้องรีเซ็ตเป็นสิ่งที่เราไม่รู้จักและนั่นคือ bCrypt'd

ขณะนี้เป็นไปตาม "แนวปฏิบัติที่ดีที่สุด" แต่นี่เป็นการเพิ่มจำนวนการสนับสนุนของเราจากผู้ใช้ทั่วไปที่ไม่เข้าใจทั้งหมดพวกเขาต้องการเข้าสู่ระบบ

เรามักจะได้รับการร้องขอจากผู้ใช้ที่บ่นเกี่ยวกับ:

  • รหัสผ่านไม่ถูกต้อง (จากรหัสที่ต้องรีเซ็ตพวกเขามักจะวางด้วยช่องว่างในตอนท้าย) พวกเขาบอกเราว่าพวกเขากำลังใช้อะไรอยู่ แต่เราไม่มีวิธีบอกพวกเขาว่ารหัสผ่านจริงของพวกเขาคืออะไร
  • บอกว่าพวกเขาไม่ได้รับอีเมลที่เราส่งไป (การเปิดใช้งานการรีเซ็ต ฯลฯ ) นี่ไม่ใช่กรณีหลังจากแก้ไขปัญหาเรามักพบว่าพวกเขาพิมพ์ผิดในอีเมลว่าพวกเขาไม่ได้ตรวจสอบบัญชีอีเมลที่ถูกต้องหรือว่ามันไปในโฟลเดอร์สแปม

แน่นอนว่าเราไม่สามารถทดลองใช้ได้สำหรับพวกเขาเนื่องจากเราไม่มีรหัสผ่าน เรากำลังบันทึกความพยายามที่ล้มเหลว แต่เรายังล้างรหัสผ่านที่ใช้เนื่องจากน่าจะเป็นรหัสผ่านที่ใช้สำหรับบัญชีอื่นและเราไม่ต้องการเก็บไว้ในไฟล์บันทึกข้อความธรรมดา สิ่งนี้ทำให้เราไม่มีอะไรจะช่วยพวกเขาเมื่อพวกเขารายงานปัญหา

ฉันอยากรู้ว่าคนส่วนใหญ่จัดการกับปัญหาเช่นนี้ได้อย่างไร


2
นอกเหนือจากการบอกรายละเอียดเพิ่มเติมเล็กน้อยในอีเมลที่ระบบของคุณส่งถึงผู้ใช้ฉันไม่เห็นสิ่งที่คุณสามารถทำได้ต่างไปจากเดิมในขณะที่ยังคงรักษาแนวปฏิบัติที่ดีที่สุด ทำให้คุณต้องการคุณสามารถตบผู้ใช้ที่โง่
เบอร์นาร์ด

1
ผู้คนโง่ผู้ใช้ของคุณมากกว่าคนอื่น ๆ ส่วนใหญ่ฉันไม่เห็นคำถามที่นี่หรือ

8
Jarrod คุณเพียงแค่ดูถูกผู้ใช้ของคุณ คนโง่ที่นี่คือคุณ คุณไม่เข้าใจระดับความรู้คอมพิวเตอร์ของผู้ใช้ ไม่ใช่ผู้ชายที่ทำผิดกฎหมาย แต่คุณกำลังเขียนซอฟต์แวร์สำหรับคนที่ไม่ได้ทำเพื่อคอมพิวเตอร์ หากคุณไม่เห็นคำถามใด ๆ อาจหมายความว่าผู้เชี่ยวชาญการใช้งานทั้งหมดนั้นถูกไล่ออกเพราะพวกเขาไม่ต้องการจริงๆ มันเป็นปัญหาของ "คนโง่" ดังนั้นเรา - นักพัฒนาที่ฉลาดเพียงแค่ห้ามพวกเขาจากเว็บและปัญหาจะหายไป :) ถ้ามีคนเขียนระบบที่มีเพียงผู้เขียนเท่านั้นที่สามารถใช้คุณไม่เห็นปัญหาหรือไม่?
Slawek

2
@Slawek: ไม่จริงๆคนโง่
Bryan Boettcher

@JarrodRoberson มันแทบจะไม่ได้เป็นแค่ผู้ใช้ของเขา - เมื่อต้องรับมือกับแอปพลิเคชั่นทางเว็บที่ต้องเผชิญกับสาธารณะนั่นคือสิ่งที่คุณได้รับ ที่กล่าวว่าชอบหรือไม่ก็ยังคงใช้ทรัพยากรสนับสนุนและเป็นคำถามที่ถูกต้องมาก
GrandmasterB

คำตอบ:


7

รหัสผ่านไม่ถูกต้อง (จากรหัสที่ต้องรีเซ็ตพวกเขามักจะวางด้วยช่องว่างในตอนท้าย) พวกเขาบอกเราว่าพวกเขากำลังใช้อะไรอยู่ แต่เราไม่มีวิธีบอกพวกเขาว่ารหัสผ่านจริงของพวกเขาคืออะไร

แก้ไขได้โดยแทนที่ลิงก์ที่มี GUID แบบครั้งเดียวซึ่งจะเข้าสู่ระบบและบังคับให้รีเซ็ตรหัสผ่าน อย่าบังคับให้ผู้ใช้คัดลอกวาง (และทำไมไม่ตัดช่องว่างที่ท้ายรหัสผ่านในแบบฟอร์มของคุณ)

บอกว่าพวกเขาไม่ได้รับอีเมลที่เราส่งไป (การเปิดใช้งานการรีเซ็ต ฯลฯ ) นี่ไม่ใช่กรณีหลังจากแก้ไขปัญหาเรามักพบว่าพวกเขาพิมพ์ผิดในอีเมลว่าพวกเขาไม่ได้ตรวจสอบบัญชีอีเมลที่ถูกต้องหรือว่ามันไปในโฟลเดอร์สแปม

ตรวจสอบให้แน่ใจว่าอีเมลขาออกของคุณถูก de-spammed (อาจจะตั้งค่าบัญชีทดสอบในบริการอีเมลทั่วไปบางอย่าง) บันทึกสิ่งที่เกิดขึ้นและอาจรายงานไปยังผู้ใช้หากพวกเขาพยายามขอรีเซ็ตใหม่ (เช่น mail to johndoee @ gmail .com ล้มเหลวไม่พบผู้ใช้คุณสะกดถูกต้องหรือไม่) นอกจากนี้โปรดบอกผู้ใช้เกี่ยวกับปัญหาการสะกดและสแปม

นอกจากนี้ OpenID และ auths ของบุคคลที่สามอื่น ๆ ก็เป็นตัวเลือกเช่นเดียวกับที่คนอื่น ๆ ได้กล่าวไว้


บางคนใส่ที่ว่างในรหัสผ่านของพวกเขา?
soandos

บางคนตัดรหัสผ่านที่สร้างโดยอัตโนมัติและมีช่องว่างที่จุดเริ่มต้นและ / หรือสิ้นสุดโดยไม่ตั้งใจ (อ่านคำถาม)
Macke

3

ฉันจะบอกว่าใช้วิธีการรับรองความถูกต้องของบุคคลที่สามเช่น Facebook, OpenID, Google ... สิ่งที่เหมาะสมสำหรับผู้ใช้ของคุณ อย่างไรก็ตามหากผู้ใช้ของคุณจำรหัสผ่านไม่ได้พวกเขาอาจจะไม่สามารถใช้ระบบการตรวจสอบสิทธิ์บุคคลที่สาม ...

ขึ้นอยู่กับสถานการณ์ของคุณคุณอาจใช้ระบบอื่นเช่นใบรับรองไคลเอ็นต์ SSL (ยากที่จะติดตั้งสำหรับผู้ใช้ แต่ถ้านี่เป็น บริษัท และคุณสามารถติดตั้งโดยอัตโนมัติได้ก็ยอดเยี่ยม) Windows SSO แอพมือถือ ฯลฯ


ใบรับรองไคลเอ็นต์เป็นแนวคิดที่ไม่ดี พวกเขาไม่ปลอดภัยและฝันร้ายที่ต้องแก้ไขจากระยะไกลหากมีสิ่งผิดปกติเกิดขึ้น Openid เป็นความคิดที่ดี
Tom Squires

ใบรับรองไม่ปลอดภัยอย่างไร
เบอร์นาร์ด

@bernard ทุกคนที่อยู่ในพีซีเครื่องนั้นมีใบรับรอง มันค่อนข้างง่ายที่จะได้รับออกมาจากไวรัส
Tom Squires

1
ฉันยอมรับว่าพวกเขามีความปลอดภัยเท่ากับเครื่องที่พวกเขาอาศัยอยู่ แต่นั่นเป็นปัญหาที่แตกต่างกันโดยสิ้นเชิง
เบอร์นาร์ด

3

คุณจำเป็นต้องทำหรือไม่? สิ่งแรกที่คุณต้องทำคือพิจารณาว่าคุณกำลังปกป้องอะไรและใครเป็นคนปกป้องคุณ บางทีมันอาจจะไม่คุ้มค่ากับการฝึกฝนที่ดีที่สุดและบางทีแนวปฏิบัติที่ดีที่สุดก็ไม่อาจหยุดยั้งผู้โจมตีของคุณได้

หากคุณไม่เห็นด้วยกับ NSA และมีบางสิ่งที่พวกเขาต้องการให้ยอมแพ้และทำให้ชีวิตผู้ใช้ของคุณง่ายขึ้น หากคุณมีหมายเลขบัตรเครดิตคุณจะต้องจัดการกับปัญหาที่ระดับความปลอดภัยที่ต้องการเนื่องจากมีผู้ร้ายที่นั่นที่ต้องการพวกเขาและจะใช้เงินและเวลาในการรับพวกเขา มันเข้าถึงอัลบั้มรูปครอบครัวคุณต้องการความปลอดภัยทั้งหมดหรือไม่

อ่านข้อมูลเกี่ยวกับผลงานของ Buce Scheiners (ความลับและการโกหก) เป็นการเริ่มต้นที่ดีในการทำความเข้าใจเกี่ยวกับความปลอดภัย


3

สิ่งแรกที่กระโดดออกมาได้คืออีเมลของคุณกำลังเข้าสู่อีเมลขยะ การตั้งค่าอีเมลเพื่อให้ได้รับการยอมรับว่าแท้จริงไม่ใช่เรื่องเล็กน้อย ฉันขอแนะนำให้คุณดูวิธีหยุดการตั้งค่าอีเมลของคุณไม่ถูกต้อง (แยกคำถามใน SO หรือไม่)

สิ่งที่สองที่ฉันอยากจะแนะนำคือให้ผู้ใช้ของคุณมีเว็บไซต์คลิกเดียว / แอปที่เริ่มต้นการกู้คืนรหัสผ่านอีเมล ปฏิเสธที่จะทำอย่างอื่นนอกเหนือจากอีเมลมันไม่ปลอดภัยและเป็นแบบอย่างที่ไม่ดี


ไม่ใช่ว่าอีเมลเป็นวิธีที่ปลอดภัยเป็นพิเศษในการส่งข้อมูลที่สำคัญ หากมีเพียงผู้ใช้ทั่วไปเท่านั้นที่จะต้องใส่ใจกับ GPG และคีย์ ssh ...
tdammers

@ ผู้ส่งอีเมลฉันยอมรับว่ามันไม่ปลอดภัย อย่างไรก็ตามมันได้กลายเป็นหลักสำคัญของตัวตนออนไลน์ของคุณ (ดีขึ้นหรือแย่ลง) ปัจจุบันยังไม่มีทางเลือกที่ดีกว่านี้
Tom Squires

ใช่แล้ว เข้ารหัสอีเมล ฉันใช้มันตลอดเวลาและมันทำให้ฉันรำคาญว่าแม้กระทั่ง บริษัท ขนาดใหญ่ก็ไม่ได้รบกวนการเข้ารหัส pubkey สำหรับอีเมลที่อ่อนไหว มันไม่ยากแม้แต่จะนำไปใช้ ฉันพบว่ามันแปลกที่มีกฎหมายอยู่ (อย่างน้อยในเนเธอร์แลนด์) ที่ทำให้ SSL เป็นข้อมูลบังคับสำหรับข้อมูลที่ละเอียดอ่อน แต่ในเวลาเดียวกันการส่งข้อมูลเดียวกันผ่าน SMTP ธรรมดาถือว่าเป็นที่ยอมรับได้
tdammers

@ ผู้ส่งอีเมลฉันไม่รู้จักพอที่จะแนะนำตัวเอง มันคุ้มค่า OP ดูว่าแม้ว่า
Squires Tom

2

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

หากในความเป็นจริงนี้ควรจะปลอดภัยคุณสามารถลองสิ่งที่ลูกค้าของฉันทำกับระบบที่เราเขียนให้พวกเขา ขณะที่อยู่ในโทรศัพท์กับบุคคลนั้นให้ไปที่ db และเปลี่ยนที่อยู่อีเมลเป็นของคุณ จากนั้นไปที่เว็บและคลิกลืมรหัสผ่าน รออีเมลและใช้เพื่อเข้าสู่ระบบใช้เว็บไซต์เปลี่ยนรหัสผ่านเป็นรหัสผ่านหรืออย่างอื่นที่คุณเห็นด้วยกับลูกค้า เปลี่ยนที่อยู่อีเมลของพวกเขากลับไปเป็นที่อยู่ของพวกเขาเองและบอกพวกเขาว่า "ทุกอย่างรหัสผ่านใหม่ของคุณใช้งานได้แล้ว!" ลูกค้ามีความสุขและคุณไม่จำเป็นต้องอธิบายให้พวกเขาฟังว่าเกิดอะไรขึ้น


2
การปรับเปลี่ยนฐานข้อมูลโดยตรงเป็นการละเมิดความปลอดภัยในตัวเอง ซึ่งหมายความว่าคุณสามารถปลอมตัวเป็นผู้ใช้ที่ใช้ระบบของคุณ
เบอร์นาร์ด

3
ลูกค้าของฉันมีแอพ Windows ซึ่งพวกเขาสามารถแก้ไขฟิลด์ใด ๆ สำหรับผู้ใช้ใด ๆ ได้บอกว่าพวกเขาได้รับแฟกซ์โดยบอกว่าตอนนี้พวกเขามีหมายเลขโทรศัพท์ใหม่ แน่นอนว่าผ่านการตรวจสอบแล้ว แน่นอนว่าเมื่อฉันเห็นขั้นตอนการเขียนที่ติดอยู่บนผนังใกล้กับโต๊ะบริการฉันไม่ได้มีความสุข แต่ฉันมาเพื่อยอมรับมันและมีหลักฐานการตรวจสอบที่แสดงว่าเกิดอะไรขึ้นถ้าใครก็ตามที่เคยโทรและบ่นรหัสผ่านถูกรีเซ็ตโดยไม่ได้รับความยินยอม สิ่งคือไม่ใช่ทุกสิ่งที่จำเป็นต้องมีความปลอดภัย และผู้ใช้กำลังบอกคุณนี้ไม่จำเป็นต้องเป็น
Kate Gregory

1
น่าเสียดายที่ผู้ใช้ส่วนใหญ่ไม่รู้อะไรเลย ขึ้นอยู่กับนักพัฒนาซอฟต์แวร์แอปพลิเคชันเพื่อบังคับใช้แนวทางปฏิบัติที่ดีที่สุด
เบอร์นาร์ด

4
ฉันยอมรับว่านี่เป็นช่องโหว่ความปลอดภัยขนาดใหญ่ และฉันยอมรับว่ามันอาจเป็นทางออกที่เหมาะสมที่สุด อย่างไรก็ตามดูเหมือนว่าโง่อย่างไม่น่าเชื่อที่ฝ่ายบริการลูกค้าจะต้องเปลี่ยนที่อยู่อีเมลของลูกค้าเป็นการชั่วคราวเพื่อรีเซ็ตรหัสผ่านของผู้ใช้นั้น: หากคุณจะให้ฝ่ายสนับสนุนลูกค้ารีเซ็ตรหัสผ่านเพียงให้พวกเขาทำโดยตรง
John Bartholomew

4
ฉันยังอยากจะทราบว่าการเปิดเผยรหัสผ่านข้อความธรรมดาที่ผู้ใช้ตั้งค่า (ในความเป็นจริงการจัดเก็บรหัสผ่านในข้อความธรรมดาที่ทุกคน) คือในความคิดของฉันอย่างมหาศาลเลวร้ายยิ่งกว่าการให้การสนับสนุนลูกค้าที่ความสามารถในการโดยตรงการเปลี่ยนแปลงรหัสผ่านผู้ใช้
John Bartholomew

2

วิธีการสุดท้ายที่ฉันใช้ในระบบที่มีผู้ใช้ที่ไม่รู้หนังสือมากในอดีตคือการนำผู้ใช้ไปยังหน้าจอที่พวกเขาได้รับหมายเลขโทรศัพท์และหมายเลขยืนยัน พวกเขาเรียกหมายเลขโทรศัพท์ยืนยันตัวตนของพวกเขาผ่านวิธีการด้วยตนเองแล้วอ่านการยืนยัน ฝ่ายสนับสนุนเข้าสู่ระบบที่แยกต่างหากป้อนหมายเลขและรับหมายเลขที่สองเพื่อส่งกลับไปยังไคลเอนต์ ไคลเอนต์ใช้รหัสที่สองเพื่อดำเนินการต่อไปยังหน้ารหัสผ่านการตั้งค่าใหม่ รุ่นลูกค้าของหน้าไม่สามารถเรียกใช้จากเครือข่ายย่อยของบุคลากรสนับสนุนและหน้าจอการสนับสนุนไม่สามารถเรียกใช้จากลูกค้า

มันไม่กันกระสุนในฐานะผู้สนับสนุนสามารถใช้ vpn เพื่อรันปลายทั้งสองจากที่เดียว แต่ก็เพียงพอสำหรับการตรวจสอบเนื่องจากบัญชีการสนับสนุนถูกบันทึกเป็นผู้รับผิดชอบกิจกรรม


-5

อาจใช้กฎความปลอดภัยที่ไม่ใช่ INSANE ด้วยการทำเช่นนี้สิ่งที่คุณได้รับก็คือความปลอดภัยที่น้อยลงจริงๆเพราะระบบนี้ยากที่จะใช้เพื่อให้ลูกค้าของคุณจะกู้รหัสผ่านใหม่ให้กับคุณและเพื่อน ๆ เพื่อให้มันทำงานได้!

คุณไม่สามารถส่งลิงค์ปกติแล้วรหัสผ่านด้านล่าง หากลิงก์ถูกทำลายโดยไคลเอนต์อีเมลเพียงแค่แสดงแบบฟอร์มที่มีหนึ่งฟิลด์ "รหัสเปิดใช้งาน" ... "พิมพ์รหัสเปิดใช้งานที่คุณมีในอีเมล" ... 5 หลักดังนั้นพวกเขาจะไม่ผิดพลาด 0 กับ O ฯลฯ 4 ตัวเลขเป็น ok สำหรับบัตรเครดิตและคุณจำเป็นต้องมีนโยบายที่ซับซ้อนเพื่อเข้าสู่ระบบที่เรียบง่าย? หากรหัสไม่ทำงานซ้ำตรวจสอบกับสตริง TRIMmed? ฉันเดาว่ามันจะไม่ปลอดภัยกว่าใช่มั้ย :)

สำหรับฉันมันมักจะเกิดขึ้นเช่นกัน ... ฉันดับเบิลคลิกที่รหัสผ่านและสิ้นสุดช่องว่างได้รับการคัดลอก ฉันไม่น่าเชื่อเลยว่าทำไม peple ไม่สามารถคิดออกเพียงเพื่อลบตัวอักษรสีขาวที่สิ้นสุดลงเมื่อการตรวจสอบล้มเหลวและทำซ้ำกระบวนการ จากนั้นบางทีปลอกตัวอักษรของ TOGGLE ให้ฉันตรวจสอบว่าฉันไม่ได้กด CL โดยไม่ตั้งใจ

คุณมีความซับซ้อนมากเกินไปมันแย่มาก ไม่ใช่ "รีเซ็ตรหัสผ่าน" และ "รหัสผ่านเริ่มต้น" ... แต่ "รหัสยืนยัน" และ "ป้อนหมายเลขยืนยันที่เราส่งให้คุณทางอีเมล", "ไม่มีอีเมลใช่หรือไม่ส่งไปที่ xxx@yyy.com ตรวจสอบ สแปมของคุณอีกครั้งยังไม่มีหรือส่งอีเมลยืนยันของคุณอีกครั้ง " ในเนื้อหา HTML ลิงค์ http://xxx.com/conf-12345-mymail-gmail-com.html เมลไคลเอ็นต์จะไม่ทำลายสิ่งนี้


5
นโยบายความปลอดภัยที่เขากล่าวถึงไม่เพียง แต่ไม่ได้เป็น "INSANE" แต่ควรเป็นข้อกำหนดของแอปพลิเคชัน "สติ" ทั้งหมด ลิงค์เช่นนี้ส่งทางอีเมลจะต้องหมดอายุหลังจากชั่วขณะหนึ่งเพื่อป้องกันไม่ให้รหัสผ่านถูกรีเซ็ต (ไม่ว่าจะโดยการลักขโมยลิงก์โดยตรงหรือโดยการสะดุดผ่านทางอัลกอริธึมช่วยคอมพิวเตอร์) อาจต้องตัดรหัสผ่านก่อนที่จะผ่านการตรวจสอบ ผู้ใช้ที่โง่ มันเป็นกฎหมาย คำตอบไม่ได้เป็นการลดมาตรการความปลอดภัยของเรา แต่ทำตามขั้นตอนเชิงรุกเพื่อช่วยให้มั่นใจว่าผู้ใช้ของเราเข้าใจขั้นตอนที่เหมาะสม
Dalin Seivewright

7
-1 นี่เป็นวิธีที่มีสติในการทำเช่นนั้นไซต์ส่วนใหญ่ใช้ หากฉันออก "ลืมรหัสผ่าน" บนเว็บไซต์และรับอีเมลพร้อมรหัสผ่านเป็นข้อความธรรมดาฉันจะปิดบัญชีของฉัน
Matt Grande
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.