Setiap aplikasi web yang memungkinkan pengguna mengautentikasi perlu memastikan kredensial pengguna mereka mendapatkan perlindungan terbaik. Secara konvensional, ini dilakukan dengan hanya menyimpan hash kata sandi daripada kata sandi itu sendiri. Untungnya, hashing kata sandi di PHP aman, aman, dan sangat mudah diterapkan Show Bulan lalu kami berbicara panjang lebar tentang berbagai cara untuk membuat hash dari string asal yang sama menjadi unik. Saat dua pengguna memanfaatkan kata sandi autentikasi yang sama, Anda tidak ingin hal itu terlihat jelas di penyimpanan data Anda. Pada saat yang sama, sebaiknya buat cadangan beberapa langkah dan diskusikan hashing kata sandi dan algoritme yang membuatnya aman Benar-Benar AcakKonsep paling mendasar dalam kriptografi yang perlu dipahami semua orang agar hashing masuk akal adalah keacakan. Dalam komputasi, tidak ada arti sebenarnya dari keacakan. Komputer adalah mesin yang sepenuhnya deterministik yang dibuat khusus untuk menghasilkan keluaran tertentu dengan masukan tertentu. Sifat yang dapat diprediksi inilah yang membuat komputer dapat diandalkan, tetapi juga yang membuat hal-hal tertentu menjadi sulit Keamanan di balik kriptografi bergantung pada keacakan. Algoritme "aman secara kriptografis" adalah algoritme yang membuat keluarannya benar-benar tidak dapat dibedakan dari derau acak. Ini sulit dicapai dalam praktiknya, tetapi ada ekstensi dan metode praktis yang tersedia untuk pengembang PHP yang menangani masalah untuk Anda Terutama, pengembang PHP harus menggunakan fungsi
Faktor Waktu dan MemoriPada saat penulisan ini, tiga algoritme tersedia untuk digunakan dengan 0 sebagai bendera ke metode _Alternatifnya, jika PHP dikompilasi dengan dukungan Argon2, Anda dapat meneruskan 1 atau 2 untuk memanfaatkan algoritme Argon2i atau Argon2id, masing-masing. Setiap pilihan algoritme menawarkan keuntungan berbeda bagi Anda untuk keamanan, tetapi setiap algoritme akan memiliki pengidentifikasi yang dikodekan ke dalam output hash dari fungsi tersebut. Bahkan jika algoritme default dalam PHP berubah di masa mendatang saat Anda menggunakan PASSWORD_DEFAULT di masa lalu, sistem dapat mendeteksi penggunaan bcrypt dan memverifikasi hash dengan benar. Fungsi 4 juga dapat menunjukkan bahwa Anda harus memutakhirkan dan melakukan hashing ulang kata sandi jika Anda mengubah algoritme hashing di masa mendatangPengembang juga dapat menyetel setiap algoritme ini secara tepat untuk menghabiskan banyak waktu dan menggunakan sumber daya sistem sebanyak yang diperlukan untuk membuat hashing relatif lambat di server. Keuntungan dari hash yang lambat adalah, jika database Anda pernah dikompromikan dan bocor, penyerang membutuhkan waktu yang sangat lama untuk menebak hash tertentu dengan kekerasan.
Algoritme 0 mendukung faktor biaya—menggunakan biaya 10 secara default. Semakin tinggi biayanya, semakin sulit mesin Anda bekerja untuk menghasilkan hash. Mengingat kami ingin menargetkan satu hash per detik, kami dapat menghitung faktor biaya yang sesuai untuk server tertentu menggunakan rutin di Listing 1Daftar 1
Di mesin saya, faktor biaya yang sesuai di sini adalah 15. Biaya ini jauh lebih tinggi daripada standar 10 Keluarga hash Argon2 menggunakan pengaturan serupa tetapi memungkinkan menentukan biaya waktu dan biaya memori. Untuk contoh ini, kami hanya akan menyesuaikan biaya waktu, mulai dari default 6 (Listing 2)Daftar 2 _Misalnya, mesin saya menyarankan biaya waktu 17, yang secara signifikan lebih tinggi daripada default hard-coded. Untuk mengontrol kecepatan hashing Anda, tim Anda harus menguji kecepatan hashing sebenarnya dari perangkat keras server Anda dan menyetel prosesnya sesuai dengan itu
Saat pengguna Anda mencoba mengautentikasi, kami perlu melakukan hash ulang kata sandi mentah yang disediakan dan memverifikasi hash tersebut ke keluaran yang sama yang telah kami simpan di tempat lain di basis data kami. Meskipun mungkin tergoda untuk melakukan hashing dan perbandingan string secara langsung, pengembang tidak boleh mengimplementasikan operasi kriptografi mereka sendiri Sebagai gantinya, kita dapat memanfaatkan
PHP akan menggunakan informasi dalam hash yang disimpan (mis. e. , algoritma dan faktor biaya) dan jalankan plaintext yang disediakan melalui operasi hashing yang sama seperti yang digunakan sebelumnya. Jika hasil hash cocok dengan nilai hash yang diketahui, fungsi mengembalikan 9. Jika tidak, ia mengembalikan _0, dan diserahkan kepada pengembang untuk menangani pengembalian negatif iniKesimpulannyaHashing itu sendiri rumit. Kami tidak merinci algoritme yang digunakan dalam artikel ini karena diskusi tersebut akan sangat panjang dan memerlukan pemahaman mendalam tentang matematika yang rumit. Untungnya, PHP membuat kata sandi hashing sangat mudah Jangan habiskan waktu untuk mencoba menulis algoritme hashing Anda sendiri. Jangan mencoba menciptakan perlindungan kata sandi atau protokol verifikasi Anda sendiri. Jangan percaya tutorial online yang menggunakan fungsi hashing lainnya untuk kata sandi. Manfaatkan fungsi hashing dan verifikasi kata sandi bawaan yang disediakan oleh PHP. Ini efisien dan dapat disetel untuk memberikan perlindungan maksimal kepada pengguna akhir Anda BiografiEric adalah pengembang web berpengalaman yang berpengalaman dengan berbagai bahasa dan platform. Dia telah bekerja dengan PHP selama lebih dari satu dekade dan memfokuskan waktunya untuk membantu pengembang memulai dan mempelajari keterampilan baru dengan teknologi pilihan mereka. Anda dapat menghubunginya langsung melalui Twitter. @EricMann Bagaimana cara hash kata sandi di PHP?password_hash . PASSWORD_DEFAULT - Gunakan algoritma bcrypt (default pada PHP 5. 5. 0). . PASSWORD_BCRYPT - Gunakan algoritma CRYPT_BLOWFISH untuk membuat hash. . PASSWORD_ARGON2I - Gunakan algoritme hashing Argon2i untuk membuat hash. . PASSWORD_ARGON2ID - Gunakan algoritme hashing Argon2id untuk membuat hash Algoritma apa yang digunakan PHP password_hash?Bcrypt adalah algoritme hashing default saat ini yang digunakan oleh password_hash(). Algoritma ini mengambil parameter opsi bernama “biaya”. Nilai biaya default adalah 10.
Metode hashing mana yang digunakan untuk kata sandi?Algoritme hashing yang umum digunakan mencakup Algoritme Intisari Pesan (MDx), seperti MD5, dan Algoritme Hash Aman (SHA), seperti SHA-1 dan keluarga SHA-2 yang . .
Apa gunanya hashing di PHP?Fungsi hashing dalam PHP adalah metode khusus yang telah ditentukan sebelumnya dan digunakan untuk menunjukkan string dalam bentuk nilai tertentu yang diukur dari karakter string. It is popular for its application as an encryption algorithm and as an index value representation for items in the database. |