Sekedar share dari Arie Nugraha di grup PHP Indonesia :
Bagi rekan-rekan yang sedang mengembangkan aplikasi dengan PHP dan kebetulan production environment-nya mendukung PHP > 5.5, sangat disarankan untuk meninggalkan format hashing MD5, SHA1, SHA256 untuk menyimpan password. Gunakan fungsi: password_hash
Contoh password_hash:
Kode di atas akan menghasilkan hash dengan panjang 60 karakter dengan algoritma Blowfish yang nilainya tidak konstan (tidak pernah sama untuk password yang sama) dari waktu-waktu karena salt-nya yang mengambil dari nilai random sistem operasi yang selalu berubah. Implikasinya untuk melakukan pemeriksaan password ketika login, maka juga harus menggunakan fungsi: password_verify
<?php
echo password_hash('sakitnyatuhdisini', PASSWORD_BCRYPT);
?>
echo password_hash('sakitnyatuhdisini', PASSWORD_BCRYPT);
?>
Contoh password_hash dan password_verity untuk login :
Sebagian besar framework PHP seperti Laravel sudah menggunakan hash ini untuk penyimpanan password.
<?php
$password = $_POST['password'];
$hashed = password_hash($password, PASSWORD_BCRYPT);
if (password_verify($password, $hashed)) {
echo 'Password cocok gan!';
} else {
die('Maaf, password anda salah! Disitu saya kadang merasa sedih frown emotikon');
}
?>
$password = $_POST['password'];
$hashed = password_hash($password, PASSWORD_BCRYPT);
if (password_verify($password, $hashed)) {
echo 'Password cocok gan!';
} else {
die('Maaf, password anda salah! Disitu saya kadang merasa sedih frown emotikon');
}
?>
Semoga bermanfaat.
Referensi:
Achour, Mehdi, et. al. (2015). PHP: password_verify - Manual. Diakses melalui http://php.net/manual/en/function.password-verify.php pada 2 Maret 2015
makasih tutorial nya gan
ReplyDeletesaya mau nanya cara implementasi jika begini :
include_once "config.php";
$data = $conn->prepare("SELECT * FROM user WHERE uname = :uname");
$data->execute(array(':uname'=>$uname, ':pass'=>$pass));
$res = $data->fetch();
if (count($res >= 1)) {
}
masih bingung soalnya
include_once "config.php";
Delete$password = password_hash("$pass","PASSWORD_BCRYPT;
$data = $conn->prepare("SELECT * FROM user WHERE uname = :uname");
$data->execute(array(':uname'=>$uname, ':pass'=>$password));
$res = $data->fetch();
if (count($res >= 1)) {
}
Mantap gan info nya.
ReplyDeletesekalian buat pelajaran..
min, blowfish maksudnya gimana?
ReplyDelete