Hash Kata Sandi di PHP
Menyimpan kata sandi dalam bentuk terbuka adalah tidak benar. Peretas jahat dapat mendapatkan akses ke basis data Anda dan mencuri kata sandi.
Oleh karena itu, biasanya login disimpan dalam bentuk
terbuka, sedangkan kata sandi di-hash dengan fungsi khusus
md5, yang menerima kata sandi sebagai parameter
dan mengembalikan hash-nya, yang darinya
tidak dapat memulihkan kata sandi itu sendiri.
Sebagai contoh, mari kita cari hash dari sebuah string:
<?php
echo md5('12345'); // akan menampilkan '827ccb0eea8a706c4c34a16891f84e7b'
?>
Sekarang kita perlu mengubah ulang proses registrasi dan otorisasi kita. Untuk awal, saya menyarankan untuk mengosongkan tabel pengguna, karena saat ini di sana tersimpan kata sandi dalam bentuk terbuka, padahal seharusnya yang disimpan adalah hash-nya. Kemudian saat pengujian registrasi, tabel akan terisi dengan data dalam format baru.
Sekarang mari kita perbaiki registrasi kita sehingga saat menyimpan pengguna baru ke basis data, yang ditambahkan bukanlah kata sandi, melainkan hash-nya.
Perbaikan yang dijelaskan akan terlihat seperti berikut:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // ubah kata sandi menjadi hash-nya
$query = "INSERT INTO users SET login='$login', password='$password'";
?>
Mari terapkan perbaikan serupa pada otorisasi:
<?php
$login = $_POST['login'];
$password = md5($_POST['password']); // ubah kata sandi menjadi hash-nya
$query = "SELECT * FROM users WHERE login='$login' AND password='$password'";
?>
Lakukan perubahan pada registrasi dengan mempertimbangkan hashing, daftarkan beberapa pengguna baru, pastikan bahwa mereka telah ditambahkan ke basis data dengan kata sandi yang telah di-hash.
Lakukan perubahan pada otorisasi dengan mempertimbangkan hashing, cobalah untuk melakukan otorisasi dengan pengguna yang telah didaftarkan sebelumnya.