ในขอบเขตของการรักษาความปลอดภัยทางไซเบอร์ การป้องกันรหัสผ่านของผู้ใช้มีความสำคัญสูงสุด เทคนิคหนึ่งที่ใช้กันทั่วไปในการปกป้องรหัสผ่านคือการแฮชรหัสผ่านก่อนที่จะจัดเก็บไว้ในฐานข้อมูล การแฮชเป็นกระบวนการเข้ารหัสที่แปลงรหัสผ่านข้อความธรรมดาให้เป็นสตริงอักขระที่มีความยาวคงที่ เทคนิคนี้มีจุดประสงค์หลายประการ โดยมีวัตถุประสงค์เพื่อเพิ่มความปลอดภัยของรหัสผ่านผู้ใช้และลดความเสี่ยงที่เกี่ยวข้องกับการเข้าถึงข้อมูลที่ละเอียดอ่อนโดยไม่ได้รับอนุญาต
วัตถุประสงค์หลักของการแฮชรหัสผ่านคือเพื่อป้องกันการเปิดเผยรหัสผ่านข้อความธรรมดาในกรณีที่มีการละเมิดข้อมูล ในสถานการณ์ที่โชคร้ายที่ฐานข้อมูลถูกบุกรุก รหัสผ่านที่แฮชจะช่วยเพิ่มการป้องกันอีกชั้นหนึ่ง เนื่องจากฟังก์ชันแฮชได้รับการออกแบบให้เป็นแบบทางเดียว จึงเป็นไปไม่ได้ในเชิงคำนวณที่จะวิศวกรรมย้อนกลับรหัสผ่านเดิมจากค่าแฮชของมัน เป็นผลให้แม้ว่าผู้โจมตีจะสามารถเข้าถึงรหัสผ่านที่แฮชได้ พวกเขาจะไม่สามารถระบุรหัสผ่านจริงได้หากไม่มีทรัพยากรการคำนวณที่สำคัญ
นอกจากนี้ การแฮชรหัสผ่านยังช่วยป้องกันการใช้ตารางสายรุ้งอีกด้วย ตาราง Rainbow เป็นตารางค่าแฮชที่คำนวณไว้ล่วงหน้าสำหรับรหัสผ่านที่เป็นไปได้จำนวนมาก ด้วยการเปรียบเทียบรหัสผ่านที่แฮชในฐานข้อมูลกับตารางเหล่านี้ ผู้โจมตีสามารถระบุรหัสผ่านเดิมได้อย่างรวดเร็ว อย่างไรก็ตาม ด้วยการใช้อัลกอริธึมการแฮช เช่น bcrypt, scrypt หรือ Argon2 ซึ่งรวมเกลือไว้ด้วย ค่าแฮชที่ได้ที่ได้จะไม่ซ้ำกันสำหรับผู้ใช้แต่ละคน การเติมเกลือเกี่ยวข้องกับการต่อท้ายสตริงอักขระแบบสุ่มต่อท้ายรหัสผ่านก่อนที่จะแฮช ดังนั้นจึงมั่นใจได้ว่าแม้ว่าผู้ใช้สองคนจะมีรหัสผ่านเดียวกัน ค่าแฮชของพวกเขาจะแตกต่างกัน สิ่งนี้ทำให้ผู้โจมตีใช้ตารางที่คำนวณล่วงหน้าได้อย่างมีประสิทธิภาพมีความท้าทายมากขึ้นอย่างมาก
นอกจากนี้ การแฮชรหัสผ่านยังช่วยป้องกันการโจมตีแบบดุร้ายอีกด้วย ในการโจมตีแบบ brute-force ผู้โจมตีจะพยายามใช้รหัสผ่านที่เป็นไปได้ทั้งหมดอย่างเป็นระบบจนกว่าจะพบรหัสผ่านที่ถูกต้อง ด้วยการใช้อัลกอริธึมการแฮชที่ช้า เช่น bcrypt เวลาที่ต้องใช้ในการคำนวณแฮชจะเพิ่มขึ้น ด้วยเหตุนี้ จำนวนความพยายามที่ผู้โจมตีสามารถทำได้ภายในกรอบเวลาที่กำหนดจึงลดลงอย่างมาก ทำให้การโจมตีแบบ brute-force มีความเป็นไปได้น้อยลง
เป็นที่น่าสังเกตว่าการแฮชรหัสผ่านเพียงอย่างเดียวนั้นไม่เพียงพอสำหรับการรักษาความปลอดภัยสูงสุด เพื่อปรับปรุงการป้องกันรหัสผ่านของผู้ใช้ให้ดียิ่งขึ้น ขอแนะนำให้รวมมาตรการเพิ่มเติม เช่น การใช้การเชื่อมต่อที่ปลอดภัย (HTTPS) เพื่อส่งรหัสผ่าน การบังคับใช้นโยบายรหัสผ่านที่รัดกุม และการใช้การตรวจสอบสิทธิ์แบบหลายปัจจัย
การแฮชรหัสผ่านก่อนจัดเก็บไว้ในฐานข้อมูลถือเป็นแนวทางปฏิบัติพื้นฐานในการรักษาความปลอดภัยแอปพลิเคชันบนเว็บ มีจุดประสงค์เพื่อป้องกันการเปิดเผยรหัสผ่านที่เป็นข้อความธรรมดา ป้องกันการใช้ตารางสีรุ้ง และลดการโจมตีแบบเดรัจฉาน ด้วยการใช้อัลกอริธึมแฮชที่มีเกลือและกระบวนการคำนวณที่ช้า ความปลอดภัยของรหัสผ่านผู้ใช้จึงได้รับการปรับปรุงอย่างมาก ซึ่งลดความเสี่ยงในการเข้าถึงข้อมูลที่ละเอียดอ่อนโดยไม่ได้รับอนุญาต
คำถามและคำตอบล่าสุดอื่น ๆ เกี่ยวกับ EITC/IS/WASF พื้นฐานด้านความปลอดภัยของเว็บแอปพลิเคชัน:
- ส่วนหัวของคำขอดึงข้อมูลเมตาคืออะไร และจะใช้เพื่อแยกความแตกต่างระหว่างคำขอที่มาจากต้นทางเดียวกันและคำขอข้ามไซต์ได้อย่างไร
- ประเภทที่เชื่อถือได้ลดพื้นผิวการโจมตีของเว็บแอปพลิเคชันและทำให้การตรวจสอบความปลอดภัยง่ายขึ้นอย่างไร
- วัตถุประสงค์ของนโยบายเริ่มต้นในประเภทที่เชื่อถือได้คืออะไร และจะใช้เพื่อระบุการกำหนดสตริงที่ไม่ปลอดภัยได้อย่างไร
- กระบวนการสร้างวัตถุประเภทที่เชื่อถือได้โดยใช้ API ประเภทที่เชื่อถือได้คืออะไร
- คำสั่งประเภทที่เชื่อถือได้ในนโยบายความปลอดภัยเนื้อหาช่วยลดช่องโหว่ของ DOM-based cross-site scripting (XSS) ได้อย่างไร
- ประเภทที่เชื่อถือได้คืออะไร และจะจัดการกับช่องโหว่ XSS ที่ใช้ DOM ในเว็บแอปพลิเคชันได้อย่างไร
- นโยบายความปลอดภัยเนื้อหา (CSP) สามารถช่วยลดความเสี่ยงของการเขียนสคริปต์ข้ามไซต์ (XSS) ได้อย่างไร
- การปลอมแปลงคำขอข้ามไซต์ (CSRF) คืออะไร และผู้โจมตีสามารถใช้ประโยชน์ได้อย่างไร
- ช่องโหว่ XSS ในเว็บแอปพลิเคชันทำให้ข้อมูลผู้ใช้เสียหายได้อย่างไร
- ช่องโหว่หลักสองประเภทที่มักพบในเว็บแอปพลิเคชันคืออะไร
ดูคำถามและคำตอบเพิ่มเติมใน EITC/IS/WASF Web Applications Security Fundamentals