การแฮชรหัสผ่านใน PHP
การเก็บรหัสผ่านในรูปแบบเปิดเป็นสิ่งที่ผิด แฮกเกอร์ผู้ประสงค์ร้ายสามารถเข้าถึง ฐานข้อมูลของคุณและขโมยรหัสผ่านได้
ดังนั้น โดยทั่วไปล็อกอินจะถูกเก็บในรูปแบบ
เปิด ในขณะที่รหัสผ่านจะถูกแฮชด้วยฟังก์ชันพิเศษ
md5 ซึ่งรับพารามิเตอร์เป็น
รหัสผ่าน และส่งคืน แฮช ของมัน โดยที่
ไม่สามารถกู้คืนรหัสผ่านเดิมได้จากแฮชนั้น
ตัวอย่างเช่น ลองหาแฮชของสตริงใดๆ:
<?php
echo md5('12345'); // แสดงผล '827ccb0eea8a706c4c34a16891f84e7b'
?>
ตอนนี้เราจำเป็นต้องปรับปรุงระบบลงทะเบียน และระบบล็อกอินของเรา ขั้นแรกฉันอยากแนะนำให้ ล้างตารางผู้ใช้ เนื่องจากตอนนี้ รหัสผ่านถูกเก็บในรูปแบบเปิด แต่ควร เก็บเป็นแฮชของพวกมันแทน หลังจากนั้นเมื่อทดสอบ การลงทะเบียน ตารางจะถูกเติมด้วยข้อมูล ในรูปแบบใหม่
ตอนนี้ให้เราแก้ไขระบบลงทะเบียนของเรา เพื่อให้เมื่อบันทึกผู้ใช้ใหม่ ลงในฐานข้อมูล จะเพิ่มแฮชของรหัสผ่านแทนที่จะเป็นรหัสผ่านเอง
การแก้ไขที่อธิบายไว้จะมีลักษณะประมาณนี้:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // แปลงรหัสผ่านเป็นแฮชของมัน
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
นำการแก้ไขที่คล้ายกันไปใช้ในระบบล็อกอิน:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // แปลงรหัสผ่านเป็นแฮชของมัน
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
โปรดทำการเปลี่ยนแปลงในระบบลงทะเบียนโดยคำนึงถึง การแฮช ลงทะเบียนผู้ใช้ใหม่สองสามคน และตรวจสอบให้แน่ใจว่าพวกเขาได้ถูกเพิ่มในฐานข้อมูล พร้อมกับรหัสผ่านที่ถูกแฮชแล้ว
โปรดทำการเปลี่ยนแปลงในระบบล็อกอินโดยคำนึงถึง การแฮช ลองล็อกอินด้วย ผู้ใช้ที่ลงทะเบียนไว้ก่อนหน้านี้