การแฮชรหัสผ่านใน PHP

การเก็บรหัสผ่านในรูปแบบเปิดเป็นสิ่งที่ผิด แฮกเกอร์ผู้ประสงค์ร้ายสามารถเข้าถึง ฐานข้อมูลของคุณและขโมยรหัสผ่านได้

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

ตัวอย่างเช่น ลองหาแฮชของสตริงใดๆ:

html<?php
  echo md5('12345'); // แสดงผล '827ccb0eea8a706c4c34a16891f84e7b'
?>

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

ตอนนี้ให้เราแก้ไขระบบลงทะเบียนของเรา เพื่อให้เมื่อบันทึกผู้ใช้ใหม่ ลงในฐานข้อมูล จะเพิ่มแฮชของรหัสผ่านแทนที่จะเป็นรหัสผ่านเอง

การแก้ไขที่อธิบายไว้จะมีลักษณะประมาณนี้:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // แปลงรหัสผ่านเป็นแฮชของมัน
  
  $query = "INSERT INTO users SET login='$login', password='$password'";
?>

นำการแก้ไขที่คล้ายกันไปใช้ในระบบล็อกอิน:

html<?php
  $login = $_POST['login'];
  $password = md5($_POST['password']); // แปลงรหัสผ่านเป็นแฮชของมัน
    
  $query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Задание 1

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

Задание 2

โปรดทำการเปลี่ยนแปลงในระบบล็อกอินโดยคำนึงถึง การแฮช ลองล็อกอินด้วย ผู้ใช้ที่ลงทะเบียนไว้ก่อนหน้านี้