CodeQuiz EP.29 - ลืมรหัสผ่าน เข้าเมลไม่ได้ รับ OTP ไม่ได้! เกิดอะไรขึ้นกับบัญชีเรา?
พี่ข้าวฟ่าง ณภัทร
เผยแพร่เมื่อ
อัปเดตล่าสุดเมื่อ

สาระสำคัญ
- เว็บมันรู้ได้ยังไงว่า "เรา" คือ "เรา"? (รู้จัก Session & Cookie)
- โดนขโมย Cookie = โดนขโมยบัญชี?
- OTP หรือกุญแจสำรอง... ที่ดันล็อกอยู่ข้างในห้อง!
- ทำไมเว็บถึงไม่ส่ง "รหัสผ่านเดิม" มาให้เรา?
- ตลกร้ายขั้นสุด "รหัสผ่านใหม่ต้องไม่ซ้ำกับรหัสผ่านเดิม"
- แก้ปัญหานี้ยังไงดี?
ลืมรหัส เข้าเมลไม่ได้ รับ OTP ไม่ได้! เบื้องหลังการล็อกบัญชีตัวเองที่คุณยังไม่รู้
เคยกันไหมคะ? ลืมรหัสผ่านเว็บ กดปุ่ม "ขอ OTP" ปุ๊บ ระบบบอกส่งไปที่อีเมลแล้ว... แต่เราดันเข้าอีเมลนั้นไม่ได้! พอจะกู้รหัสอีเมล ระบบก็ดันส่ง OTP ไปที่เบอร์เก่าที่ปิดทิ้งไปแล้วอีก!
ตู้ม! ยินดีด้วยค่ะ คุณได้ติดแหง็กอยู่ใน "วังวนนรกของการกู้คืนบัญชี (Account Recovery Loop)" เป็นที่เรียบร้อย รหัสก็ลืม เมลก็เข้าไม่ได้ OTP ก็ลอยไปในอากาศ... สรุปบัญชีนี้ยังเป็นของเราอยู่ไหมเนี่ย?!
ทำไมระบบความปลอดภัยมันถึงทำให้ชีวิตเรายุ่งยากขนาดนี้? วันนี้เราจะมาแกะรอยระบบหลังบ้านที่คนทำเว็บและสาย Cyber Security เขารู้กัน แบบสั้นๆ กระชับ เข้าใจง่ายค่ะ!
เว็บมันรู้ได้ยังไงว่า "เรา" คือ "เรา"? (รู้จัก Session & Cookie)
เคยสังเกตไหมคะว่า ทำไมเวลาเราปิดคอมไปแล้ว เปิด Facebook หรือ YouTube ขึ้นมาใหม่ เราถึงไม่ต้องพิมพ์รหัสผ่านซ้ำ? นั่นเพราะเบื้องหลังมี 2 ตัวละครหลักทำงานอยู่:
- Session (สถานะการล็อกอิน): ทันทีที่เราพิมพ์รหัสผ่านถูกต้อง เซิร์ฟเวอร์จะสร้าง "ตั๋วผ่านทาง" ขึ้นมาเพื่อบอกระบบว่า "คนๆ นี้ล็อกอินสำเร็จแล้วนะ"
- Cookie (ความทรงจำของเบราว์เซอร์): เว็บจะฝากไฟล์เล็กๆ ที่จำรหัสตั๋วผ่านทางนี้ไว้ในเครื่องเรา ทุกครั้งที่เรากดเปลี่ยนหน้าเว็บ เบราว์เซอร์จะแนบไฟล์ Cookie นี้ไปด้วยเสมอ เว็บก็เลยรู้ว่า "อ้อ คนเดิมนี่เอง ไม่ต้องถามรหัสผ่านใหม่ละ"

ถ้าเราโดนขโมย Cookie = โดนขโมยบัญชี?
ใช่ค่ะ! นี่คือฝันร้ายของการโดนแฮ็กเลย เพราะในเมื่อเว็บเชื่อใจไฟล์ Cookie ในเครื่องเรา ถ้าคุณเผลอไปกดลิงก์แปลกๆ หรือโหลดโปรแกรมเถื่อน แฮ็กเกอร์ก็จะใช้มัลแวร์แอบก็อปปี้ไฟล์ Cookie ตัวนี้ไปได้
พอแฮ็กเกอร์เอา Cookie ของคุณไปแปะในเบราว์เซอร์ของเขา เขาจะสามารถ เปิดเข้าบัญชีคุณได้ทันทีโดยไม่ต้องพิมพ์รหัสผ่าน และไม่ต้องรอรับ OTP เลยสักตัว! นี่คือเหตุผลว่าทำไมอยู่ๆ บัญชีถึงปลิวทั้งที่เราไม่ได้ให้รหัสใครไปเลย
OTP หรือกุญแจสำรอง... ที่ดันล็อกอยู่ข้างในห้อง!
เพื่อป้องกันคนเดารหัสผ่าน ระบบจึงบังคับให้เราใช้ 2FA (Two-Factor Authentication) หรือการรับ OTP แต่ความพลาดที่สุดของคนใช้งานทั่วไปคือ การผูกทุกเว็บไว้กับ "อีเมลเดียว" ลองนึกภาพว่าคุณลืมรหัส Facebook ระบบเลยส่ง OTP ไปที่ Gmail... แต่คุณดันเข้า Gmail ไม่ได้!

กุญแจรถอยู่ในบ้าน แต่กุญแจบ้านดันอยู่ในรถ~~ จะไปไหนไม่ได้ทั้งหมด เข้ารถเข้าบ้านไม่ได้~~
แฮร่!! ล้อเล่นนะคะ แต่มันก็เหมือนคุณทำกุญแจบ้านหาย แล้วพยายามจะไปหยิบ "กุญแจสำรอง" แต่ดันนึกขึ้นได้ว่ากุญแจสำรองมันอยู่ "ในบ้าน" ที่กำลังล็อกอยู่นั่นแหละค่ะ! นี่คือจุดอ่อนของการพึ่งพาช่องทางเดียว (Single Point of Failure)

ทำไมเว็บถึงไม่ส่ง "รหัสผ่านเดิม" มาให้เรา?
หลายคนอาจจะหงุดหงิดว่า "ก็เว็บมันรู้ว่าเราเป็นเจ้าของ ทำไมไม่ส่งรหัสเก่ามาให้ทาง SMS ไปเลย จะให้ตั้งใหม่ทำไม?" ความจริงคือ... เว็บที่ดี "จะไม่รู้" รหัสผ่านของคุณค่ะ! เวลาคุณตั้งรหัสผ่าน เช่น password123 ระบบจะไม่เก็บข้อความนี้ไว้ตรงๆ แต่จะเอาไปเข้ากระบวนการที่เรียกว่า "Hashing" (การแปลงรหัสทางเดียว) จนออกมาเป็นตัวอักษรยึกยือ เช่น x8&^f92m$!
การ Hashing นี้ย้อนกลับไม่ได้ เหมือนคุณเอาหมูไปเข้าเครื่องบด คุณย้อนหมูบดกลับมาเป็นเนื้อหมูเป็นชิ้นๆ ไม่ได้ ดังนั้นเวลารหัสผ่านหาย ระบบถึงไม่มีรหัสเดิมส่งมาให้คุณ สิ่งเดียวที่ทำได้คือ... ยืนยันตัวตนให้ผ่าน แล้วตั้งรหัสผ่านใหม่ซะ!

ตลกร้ายขั้นสุด "รหัสผ่านใหม่ต้องไม่ซ้ำกับรหัสผ่านเดิม"
อีกปัญหาที่พบเจอบ่อยคือเรากำลังจะ "ตั้งรหัสผ่านใหม่" พอพิมพ์รหัสปุ๊บ... ระบบเด้งเตือนว่า "รหัสผ่านใหม่ต้องไม่ซ้ำกับรหัสผ่านเดิม"
ถ้ารู้ว่านี่คือรหัสเดิม ฉันจะกดลืมรหัสตั้งแต่แรกทำไมล่ะโว้ย! คำถามคือ “อ้าว ไหนบอกว่าเว็บไม่รู้รหัสผ่านเราไง แล้วมันรู้ได้ไงว่าเราพิมพ์ซ้ำ?” คำตอบก็คือ เครื่องบดเนื้อ (Hashing) เจ้าเก่าค่ะ! ถึงเว็บจะไม่รู้ว่ารหัสจริงๆ ของคุณคือคำว่าอะไร แต่มันจำหน้าตา "หมูบด (Hash) กองเดิม" ได้
แล้วคำถามที่ตามมาติดๆ ก็คือ... "อ้าวเฮ้ย! ถ้านี่คือรหัสเดิม แล้วตอนหน้าล็อกอินแรกสุด ฉันก็พิมพ์รหัสนี้ไป ทำไมมันบอกว่ารหัสผิดล่ะเนี่ย?!" มันเป็นรหัสตั้งแต่เมื่อไหร่กันแน่?! สาเหตุเกิดจาก 2 กรณีตลกร้ายนี้ค่ะ:
- ตอนแรกล็อกอิน... คุณแค่นิ้วเบียด!: คุณอาจจะจำรหัสถูกแล้ว แต่ตอนพิมพ์ครั้งแรกลืมเปลี่ยนภาษา เผลอเปิด Caps Lock หรือกดผิดไปแค่ตัวเดียว ทำให้รหัสที่ถูกส่งไปเข้า "เครื่องบดเนื้อ (Hashing)" หน้าตาออกมาไม่เหมือนของแท้ ระบบเลยปัดตกตั้งแต่แรก
- ผีรหัสเก่าหลอกหลอน: ระบบรักษาความปลอดภัยของหลายๆ เว็บ ไม่ได้เก็บแค่ "หมูบด (Hash) ปัจจุบัน" นะคะ แต่มันเก็บประวัติ "รหัสผ่านเก่าๆ ย้อนหลัง 3-5 ครั้งล่าสุด" เอาไว้ด้วย! รหัสที่คุณเพิ่งพิมพ์ไปแล้วมันเด้งเตือนว่าห้ามซ้ำ อาจจะเป็นรหัสเมื่อ 2 ปีที่แล้วที่คุณเคยใช้ แล้วระบบมันดันจำได้ (แต่เราจำไม่ได้) เลยไม่ให้คุณใช้ซ้ำไงล่ะ!

แก้ปัญหานี้ยังไงดี?
เพื่อไม่ให้ชีวิตต้องมาติดลูปนรกแบบนี้ เราขอแนะนำ:
- อย่าผูกทุกอย่างกับอีเมลเดียว: ควรมีอีเมลสำรอง หรืออัปเดตเบอร์โทรศัพท์ในระบบให้เป็นปัจจุบันเสมอ
- ใช้ Authenticator App: เปลี่ยนมารับ OTP ผ่านแอป (เช่น Google Authenticator) เพราะมันสร้างรหัสในมือถือเราได้เลย ไม่ต้องง้อสัญญาณเน็ตหรืออีเมล
- อย่าโหลดของเถื่อน: เพื่อป้องกันมัลแวร์มาขโมย Cookie ขโมยความทรงจำในเครื่องเราไป

สุดท้ายแล้วระบบรักษาความปลอดภัยต่างๆ ไม่ได้ถูกออกแบบมาเพื่อแกล้งเราให้ปวดหัวค่ะ แต่มันถูกสร้างมาเพื่อปกป้องข้อมูลของเราจากผู้ไม่หวังดีในโลกไซเบอร์ แม้จะต้องแลกมากับความยุ่งยากไปบ้าง แต่ถ้าเราเข้าใจระบบหลังบ้านอย่าง Cookie, Session และจัดการช่องทางการรับ OTP ของตัวเองให้ดี เราก็จะใช้อินเทอร์เน็ตได้อย่างปลอดภัย ไม่ต้องคอยมากุมขมับตอนลืมรหัสผ่านอีกต่อไปค่ะ!
เป็นยังไงกันบ้างคะทุกคนนน เนื้อหาเยอะมากเลยใช่มั้ยคะ? มีใครเคยเจอปัญหาแบบนี้กันบ้างไหมคะ? ถ้าใครที่อยากศึกษาเพิ่มเติมสามารถเรียนได้ที่ Leagues of Code TH ดูรายละเอียดเพิ่มเติมได้ที่เว็บไซต์: https://www.th-leaguesofcode.com/