MasRud.com
oleh Rudi — 11 November 2018

Menggunakan Password_hash dan Password_verify pada PHP

Pada tulisan kali kita akan berbicara mengenai fungsi password_hash() dan password_verify() yang ada pada PHP.

Password_hash adalah salah satu fungsi yang dimiliki PHP untuk melakukan hashing menggunakan algoritma satu arah (one-way hashing). Fungsi ini terdapat pada PHP versi 5.5 ke atas.

Sedangkan Hash sendiri adalah suatu mekanisme untuk memetakan suatu data yang diinputkan berupa teks polos (plain text) menjadi output berupa checksum atau fingerprint (kode acak dengan panjang karakter yang tetap).

Karena password_hash menggunakan algoritma hashing satu arah, maka data yang sudah terhash tidak akan bisa dikembalikan lagi menjadi data aslinya.

Misalkan saja kita memiliki sebuah password, kemudian password tersebut dihash menggunakan fungsi password_hash(), maka password tersebut akan berubah menjadi kode acak seperti ini:

$2y$10$EnIi90KP.0BqCVJgK21BrO3xzArxCZaiAPaUebCw.K2Xw71QOCZv2

Contoh fungsi password_hash:

Kode di atas akan menghasilkan output:

$2y$10$EnIi90KP.0BqCVJgK21BrO3xzArxCZaiAPaUebCw.K2Xw71QOCZv2

Penjelasan kode di atas adalah sebagai berikut:

  • password_hash adalah fungsi yang digunakan untuk melakukan hashing.
  • secret password adalah password yang kita buat.
  • PASSWORD_DEFAULT adalah algoritma bawaan untuk melakukan hash yaitu menggunakan BCRYPT dan akan menghasilkan output sepanjang 60 karakter. Sangat disarankan untuk membuat field data pada database sepanjang 255 karakter, sebab output hasil hash dapat lebih panjang sesuai dengan algoritma yang digunakan.
  • $options hanya sebuah nama variabel array untuk menampung nilai cost. Nama variabel $options ini dapat kita ganti sesuka hati. Variabel $options ini tidak wajib.
  • cost adalah parameter yang digunakan untuk menentukan seberapa banyak hash dilakukan. Untuk BCRYPT, jika nilainya 10 maka proses hashing dilakukan sebanyak 2^10 atau 1024 kali.

Kode output hasil dari proses hashing tersebut kita simpan dalam database untuk membuat autentikasi login user dengan password_verify().

Bagaimana, sudah tahukan apa itu fungsi password hash?

Sekarang mari kita bahas fungsi password_verify().

Password_verify adalah fungsi PHP yang berguna untuk melakukan verifikasi (mencocokkan) data yang telah terhash memakai fungsi password_hash().

Contohnya fungsi password_verify seperti ini:

  • $hashed adalah variabel untuk menampung nilai data yang dihasilkan dari proses hashing dengan fungsi password_hash().
  • password_verify adalah fungsi untuk mencocokkan data asli dengan data yang sudah terhash.
  • secret password adalah password yang kita buat.

Lebih jelasnya begini,

Fungsi password_verify akan mencocokkan data asli (secret password) dengan data yang terhash ($hash). Jika data cocok maka akan menampilkan pesan password is valid! dan jika tidak cocok maka akan menampilkan Invalid password.

Bagaimana menerapkan fungsi password_hash() dan password_verify()?

Untuk menerapkan fungsi password_hash() dan password_verify() pada login aplikasi, silakan perhatikan dan amati contoh kode autentikasi yang sudah saya buat. Pada kode tersebut sudah saya tuliskan penjelasannya.

Agar lebih mudah mempelajari cara penerapan fungsi password_hash() dan password_verify(), silakan download source code login PHP di bawah ini:

Download source code

Fungsi password_hash sangat direkomendasikan untuk mengenkripsi password karena menggunakan algoritma hashing satu arah. Karena meskipun kita tau output password yang terhash, mustahil bagi kita untuk tahu password aslinya.

Jadi mulai sekarang, jika kalian akan membuat sebuah aplikasi dengan PHP, pastikan untuk menggunakan password_hash() dan password_verify() untuk keamanan loginnya.

Referensi:

- https://secure.php.net/manual/en/function.password-hash.php
- https://secure.php.net/manual/en/function.password-verify.php
Kategori: PHP
Tinggalkan Komentar
Komentar
Melayani jasa pembuatan
Aplikasi dan website.
Hubungi kontak kami!