Ini adalah kode SQL untuk membuat tabel (Anda dapat menggunakannya dengan PhpMyAdmin untuk membuat tabel di lingkungan pengembangan Anda) Show
Penting Pastikan untuk menyetel kolom sandi sebagai varchar . (Varchar adalah kolom teks dengan panjang variabel. ) Alasannya adalah ukuran hash dari password_hash() dapat berubah (detail lebih lanjut tentang ini nanti) Jika Anda memerlukan bantuan dengan SQL, Anda dapat menemukan semua yang Anda butuhkan di sini. Cara menggunakan PHP dengan MySQL
Sekarang, Anda perlu terhubung ke database dari skrip PHP Anda Jika Anda tidak tahu caranya, berikut adalah skrip koneksi PDO sederhana yang dapat langsung Anda gunakan Cukup edit parameter koneksi untuk membuatnya berfungsi dengan lingkungan Anda sendiri _
Sekarang Anda siap menambahkan pengguna baru ke tabel Ini adalah contoh lengkap (pdo. php adalah skrip yang berisi cuplikan koneksi database sebelumnya)
Penting. Dalam contoh ini kami melewatkan langkah-langkah validasi, termasuk
Cara mengubah kata sandi penggunaContoh selanjutnya menunjukkan cara mengubah kata sandi pengguna yang ada Pertama, dapatkan kata sandi baru dan buat hashnya dengan password_hash()
Kemudian, perbarui baris tabel yang memiliki ID akun yang sama dari pengguna saat ini dan atur hash baru Catatan. kami menganggap variabel $accountId berisi ID akun _Cara menggunakan password_verify()Untuk memverifikasi kata sandi yang diberikan oleh pengguna jarak jauh, Anda perlu menggunakan fungsi password_verify() password_verify() mengambil dua argumen
Jika password benar, password_verify() mengembalikan true Ini sebuah contoh
Penting Anda tidak bisa hanya membandingkan dua hash yang berbeda untuk melihat apakah keduanya cocok Alasannya adalah password_hash() membuat hash asin Hash asin menyertakan string acak, bernama "garam", sebagai perlindungan terhadap tabel pelangi dan serangan kamus Oleh karena itu, setiap hash akan berbeda meskipun kata sandi sumbernya sama
Coba kode berikut. Anda akan melihat bahwa kedua hash berbeda, meskipun kata sandinya sama _
Catatan password_verify() hanya bekerja dengan hash yang dibuat oleh password_hash() Anda tidak dapat menggunakannya untuk memeriksa kata sandi dengan hash MD5 atau SHA Bagaimana cara meningkatkan keamanan hashHash yang dihasilkan oleh password_hash() sangat aman Tapi Anda bisa membuatnya lebih kuat dengan dua teknik sederhana
biaya BcryptBcrypt adalah algoritma hashing default saat ini yang digunakan oleh password_hash() Algoritma ini mengambil parameter opsi bernama “biaya”. Nilai biaya default adalah 10 Dengan menaikkan biaya, Anda dapat membuat hash lebih sulit untuk dihitung. Semakin tinggi biayanya, semakin lama waktu yang dibutuhkan untuk membuat hash Biaya yang lebih tinggi membuat lebih sulit untuk memecahkan hash. Namun, itu juga membuat pembuatan hash dan pemeriksaan lebih lama juga Jadi, Anda ingin menemukan kompromi antara keamanan dan beban server Ini adalah bagaimana Anda dapat menetapkan nilai biaya khusus untuk password_hash()
Tapi berapa nilai biaya yang harus Anda tetapkan? Kompromi yang baik adalah nilai biaya yang memungkinkan server Anda membuat hash dalam waktu sekitar 100 md Berikut adalah tes sederhana untuk menemukan nilai ini _0Setelah Anda menemukan biaya Anda, Anda dapat menggunakannya setiap kali Anda mengeksekusi password_hash() seperti pada contoh sebelumnya
Selalu perbarui hash Anda dengan password_needs_rehash()Untuk memahami langkah ini, mari kita lihat cara kerja password_hash() password_hash() membutuhkan tiga argumen
PHP mendukung berbagai algoritme hashing, tetapi biasanya Anda ingin menggunakan algoritme default Anda dapat memilih algoritme default dengan menggunakan konstanta PASSWORD_DEFAULT, seperti yang telah Anda lihat pada contoh sebelumnya
Mulai Juni 2020, algoritme default adalah Bcrypt Namun, PHP dapat mengubah algoritme default di masa mendatang, jika algoritme yang lebih baik dan lebih aman diimplementasikan Saat itu terjadi, konstanta PASSWORD_DEFAULT akan mengarah ke algoritme baru. Jadi, semua hash baru akan dibuat menggunakan algoritme baru Tetapi bagaimana jika Anda ingin mengambil semua hash lama Anda, yang dibuat dengan algoritme sebelumnya, dan secara otomatis membuatnya lagi dengan yang baru?
Di sinilah password_needs_rehash() berperan Fungsi ini memeriksa apakah hash telah dibuat dengan algoritme dan parameter tertentu Misalnya _1Jika algoritme hashing default saat ini berbeda dengan algoritme yang digunakan untuk membuat hash, password_needs_rehash() menampilkan nilai true password_needs_rehash() juga memeriksa apakah parameter opsi berbeda Ini sangat berguna jika Anda ingin memperbarui hash setelah mengubah parameter seperti biaya Bcrypt
Contoh ini menunjukkan bagaimana Anda dapat secara otomatis memeriksa hash kata sandi dan memperbaruinya jika diperlukan, saat pengguna jarak jauh masuk _2Cara mengonversi hash lama secara otomatisDalam contoh ini, Anda akan mengimplementasikan skrip sederhana untuk mengonversi hash lama berbasis MD5 secara otomatis untuk mengamankan hash yang dibuat dengan password_hash() Begini Cara kerjanya
Ini skripnya _3KesimpulanDalam tutorial ini Anda belajar cara menggunakan password_hash() dan password_verify() untuk membuat hash yang aman dari kata sandi Anda (dan mengapa Anda sebaiknya tidak menggunakan MD5) Anda juga belajar cara membuat hash kata sandi Anda lebih aman dengan menetapkan biaya Bcrypt yang tepat dan secara otomatis mengulangi kata sandi Anda sesuai kebutuhan Apa fungsi hash dari PHP?Fungsi hash() mengembalikan nilai hash untuk data yang diberikan berdasarkan algoritme seperti (md5, sha256) . Nilai kembalian adalah string dengan hexits (nilai heksadesimal).
Bagaimana cara menggunakan hashing di PHP?Lihat Juga ¶ . hash_file() - Hasilkan nilai hash menggunakan konten file yang diberikan hash_hmac() - Menghasilkan nilai hash yang dikunci menggunakan metode HMAC hash_init() - Menginisialisasi konteks hashing tambahan md5() - Menghitung hash md5 dari sebuah string sha1() - Menghitung hash sha1 dari sebuah string Bagaimana cara membuat kode hash di PHP?Fungsi PHP sha1() . Hitung hash SHA-1 dari string "Hello". $str = "Halo"; . Print the result of sha1(): $str = "Hello"; echo "The string: ". $str." "; .. . Cetak hasil sha1() lalu uji. $str = "Halo"; Fungsi hashing mana yang terbaik di PHP?Dalam PHP, terdapat berbagai algoritma kriptografi yang umum digunakan seperti md5, crypt, sha1, dan bcrypt. Dan yang paling umum digunakan saat ini adalah metode hashing bcrypt . |