Menyimpan password dalam database MySQL agar tidak terbaca oleh webmaster.
Kamis Kliwon, 2 Juni 2005
Terkadang dalam membuat website yang digunakan oleh publik, kita perlu menyimpan data penting seseorang, diantaranya adalah berupa password. Seperti di website ini, ketika anda melakukan pendaftaran, anda diminta memasukkan password untuk account anda.
Saat mengisikan password, bisa saja anda berpikir 'wah, jangan-jangan webmaster bisa lihat passwordku?'
Secara teknis, memang bisa, karena dalam hal ini webmaster yang membuat script PHP-nya. Namun secara etika, kita mesti saling percaya, bahwa password merupakan privasi seseorang. Jadi meski saya bisa (mampu) membuat agar password anda terbaca oleh saya, tapi saya tidak melakukannya. Hal tersebut karena password anda tersimpan secara ter-enkripsi.
Dalam MySQL, terdapat fungsi PASSWORD() yang berguna untuk mengenkripsi sebuah string, sehingga meski suatu record bisa terbaca, tapi isi field bisa disembunyikan. Kalau tidak salah (cuma nebak) fungsi PASSWORD menggunakan fungsi MD5, yang cukup banyak digunakan karena kehandalannya.
Implementasi dari fungsi tersebut adalah, ketika seorang user melakukan pendaftaran, lalu data tersebut akan disimpan, maka field 'password' dikenakan fungsi PASSWORD() ini.
Contoh: $username = 'aryo'; $password = 'stiki'; $fullname = 'Aryo Sanjaya'; $email = 'aryo@elang526.net'; insert into pengguna(username, password, nama, email) values('$username',PASSWORD('$password'),'$fullname','$email')
Seperti terlihat, khusus field 'password', valuenya dikenakan fungsi PASSWORD() sehingga yang nantinya tersimpan bukan string 'stiki', tapi string '60e866ca5bc6cf90', yang merupakan hasil pengacakan string 'stiki'.
Langkah selanjutnya, yaitu untuk membaca data user ketika ada user yang 'login'. Untuk membandingkan password, maka value password yang diinputkan oleh user harus dikenakan fungsi PASSWORD() juga.
Contoh: $username = 'aryo'; $password = 'stiki'; select nama, email from pengguna where username = '$username' and password = PASSWORD('$password')
Dengan seperti itu, maka perbandingan password dalam keadaan masih terenkripsi. Dan sang webmaster sekalipun tidak akan tahu password dari pengguna websitenya. Itu kalau dia punya etika untuk menerapkan teknik ini, atau teknik sejenisnya.
Demikian hal sedikit dari saya, semoga ada manfaatnya.
Aryo Sanjaya
saya kok lebih comfort pake MD5 yach..
jadi sctip diatas bisa dibuat begini:
insert into pengguna(username, password, nama, email)
values('$username',MD5('$password'),'$fullname','$email
dan saat query select menjadi
select nama, email from pengguna
where username = '$username'
and password = MD5('$password')
Yup, saya juga lebih prefer pake itu, karena lebih global penggunaannya. Makasih inputannya. Ini aku nyoba ngisi comment lewat Lynx :D
Ehm, klo situs friendster itu kan ada fasiltas buat import mail address dr account di yahoo atau hotmail,etc utk invite friend....nah itu kan kita ngasih password account mail kita tuh biar bisa di-import..., kira2 pakai etika nggak frienster om ? :)
Menurutku itu tindakan yang riskan pin, harap dijauhi :D Apa benar seperti itu si friendster? Kalo untuk situs yang menyediakan fasilitas import address book, setauku dia cuma ngasih tau langkah-langkah yang harus dilakukannya di Yahoo! Ga sampe minta passwordnya. Oh ya, aku juga pernah tau situs model gini, si Ringo sama LoveHelper kalo ga salah, juga minta password di email kita. Bodoh aja, langsung kututup browsernya :D
http://www.friendster.com/emailimport/yahoo/yimport.php ;) Masa ini bukan si friendster seh ?
:-* yang soal friendster emang itu berkasus kok, pernah di bahas di sebuah forum. back to topik, mas kalo dikau buat app pake database misal mysql serper, nah user itu di catat dalam table tok apa di daptarin (jadi mirip daktarin *no commercial break*) juga sebagai user di mysql nya? maksudnya kalo di daptarin ntar konek databasenya pake user nya dia sendiri jd keliatan di serper dia login. gimana mas mas semua, pake yang mana. mas yang di apit ama [code] di buat kaya di web nya delhi-id.com bisa mbedain string apa integer kaya editor delphi mas, cobaen mas, kan keyen :D