Fungsi md5() untuk proteksi password pada PHP
Saya kemarin dimintai tolong oleh beberapa kolega saya untuk me-review / meng-audit program skripsi mereka sebelum disidangkan 2 minggu kemudian. 5 orang yang membuat web ecommerce, dan 2 orang membuat sistem informasi berbasis web ( semua menggunakan PHP ). Dari 7 buah skripsi teman saya tersebut ternyata tak satupun yang menggunakan pengamanan / enkripsi dalam database khususnya untuk username dan password yang plaintext gitu aja. Padahal fungsi md5() sudah capek2 ditulis untuk membantu.. hehe. Yah begini contoh penggunaan beserta penjelasannya :
MD5 sendiri merupakan algoritma enkripsi satu arah ( hampir tidak mungkin untuk brute force decryption ). Caranya adalah dengan mengacak string yang akan dienkripsi menjadi md5 hash ( hasil enkripsi ). Nah untuk mecocokkannya cukup mudah yaitu dengan mengenkripsi password yang diinput saat login kembali menjadi hash untuk kemudian dicocokkan dengan hash password pada database sesuai dengan login username tersebut.
Code
Tabel user: user_id INT(5) PK, login VARCHAR(10), pass VARCHAR(8).
skrip untuk insert record user baru ke db :
$hash_pass = md5($password);
$kueri = mysql_query("INSERT INTO user VALUES(23425,’userbaru’,'$hash_pass’)");
skrip untuk login
$hash_pass = md5($password);
$kueri = mysql_query("SELECT * FROM user WHERE login=’$username’ AND pass=’$hash_pass’");
if(!$kueri){
die("login gagal");
}
dengan begini password yang disimpan dalam database tidak dalam bentuk plain text which is so dangerous. Peace.
