การเข้ารหัส Password บน PHP
การเขียนโปรแกรมทในงานี่มีระบบผู้ใช้ มักจะมีการเป็นรหัสผ่านของผู้ใช้ด้วย โดยที่รู้กันคือ เราจะไม่เก็บรหัสตรงๆโดยเด็ดขาด เนื่องจากเรื่องความปลอดภัย และความเป็นส่วนตัวของผู้ใช้ ดังนั้นรหัสผ่านที่เก็บในฐานข้อมูลจะต้องถูกเข้ารหัส เพื่อไม่ให้ผู้ไม่หวังดีเอาไปใช้ประโยชน์ได้
การเข้ารหัสที่นิยมใช้กันมักจะเป็น md5(sha1 และ sha256 ด้วย) ซึ่งเป็น function ที่ง่าย แต่ในปัจจุบันนี้มันไม่ปลอดภัยแล้ว การเข้ารหัสด้วยวิธีเหล่านี้ ถูกถอดรหัสได้จาก Rainbow table แล้ว
Rainbow table เป็นสาเหตุให้การเข้ารหัสด้วยวิธีการเดิมๆ ไม่ปลอดภัย โดยการสร้าง hash จำนวนมากขึ้นมาเก็บไว้ แทนการถอดรหัส hash ตรงๆ
หลังจาก PHP5.5 มา ได้มีการนำเสนอ password_hash เพื่อใช้ในการเข้ารหัส
password_hash( $password, $algorithm [, $options ] )
password_hash มีอัลกอริทึมให้เลือกคือ PASSWORD_DEFAULT, PASSWORD_BCRYPT และ PASSWORD_ARGON2I(มีใน PHP7.2.0 ขึ้นไป) โดย PASSWORD_DEFAULT จะเรียกใช้ PASSWORD_BCRYPT แทน ซึ่งอาจเปลี่ยนได้ในอนาคต
password_verify( $password, $hash )
ส่วนการตรวจสอบสามารถใช้ password_verify โดยระบบจะเช็คอัลกอริทึมให้เองจาก hash ที่ส่งเข้าไป
ถึงตรงนี้ถ้ายังใช้ md5 sha1 sha256 กันอยู่ก็เริ่มเปลี่ยนกันได้แล้วนะครับ