Di Terbitkan oleh Unknown 0 Comments

Masalah autentifikasi user ini sering ditanyakan oleh orang kepada saya. Masalah ini pula yang sering banyak dijumpai kelemahannya sehingga hal ini menjadi sesuatu hal yang sangat krusial. Sekali autentifikasi ini bobol, maka dampaknya akan sangat berbahaya bagi suatu sistem.

Pada artikel ini akan dijelaskan perlunya autentifikasi user dalam suatu sistem, serta cara pembuatannya dengan PHP script.

Ngomong-ngomong… apa sih autentifikasi user ini? Autentifikasi user adalah suatu mekanisme untuk memastikan apakah suatu user itu berhak masuk ke dalam sistem atau bukan. Implementasinya adalah berupa login. Dalam hal ini user yang berhak mengakses akan diberikan nama user tertentu beserta password. Gampangannya… bila terdapat nama user dan password yang tidak terdaftar dalam daftar user, maka user tersebut tidak berhak mengakses. Saya kira tidak perlu dipanjanglebarkan masalah ini karena hampir semua orang tahu :-)

OK…. saya akan coba menjelaskan mekanisme autentifikasi ini terlebih dahulu. Berikut ini alur atau proses dari proses autentifikasi user, mulai user tersebut mendaftar.

Pendaftaran User

1. User mengisi form pendaftaran sebagai legal user (user mengisi username dan password)
2. Sistem akan mengecek apakah username yang didaftarkan sudah ada yang memiliki atau belum
3. Jika sudah ada, user diminta mengisi kembali username yang lain beserta passwordnya. Sedangkan jika belum ada, data user ini akan disimpan dalam database, dengan password terenkripsi.

Proses Autentifikasi

1. User yang akan mengakses sistem diminta memasukkan username dan password (asli)
2. Sistem akan mencari password terenkripsi yang tersimpan dalam database berdasarkan username yang terdaftar
3. Sistem akan mencocokkan antara password asli terenkripsi yang diisikan user melalui form login, dengan password terenkripsi yang tersimpan dalam database
4. Jika password asli terenkripsi yang dikirim via form login ini sama dengan password terenkripsi yang ada dalam database, maka user tadi bisa masuk ke dalam sistem. Jika tidak sama, maka user tadi tidak berhak masuk ke sistem.

Proses autentifikasi tidak hanya sampai sini saja… Kadangkala user nakal ingin masuk ke sistem tanpa melalui proses autentifikasi terlebih dahulu atau melakukan by pass ke dalam sistem. Nah… hal ini juga berbahaya. Kita harus bisa mengantisipasi hal ini bila tidak ingin sistem yang dibangun diacak-acak oleh orang yang tidak berhak.

Dalam artikel ini akan dibahas bagaimana membuat autentifikasi user ini dengan script PHP, serta mengantisipasi user yang mem-by pass autentifikasi ini.

Pertama, kita siapkan tabel user terlebih dahulu.

CREATE TABLE user (
username varchar(20),
password varchar(32),
PRIMARY KEY (username)
)

Mengapa field username ini kita buat primary key, ya… karena username harus unik, tidak boleh ada username yang sama. Sedangkan password kita set tipe datanya varchar dengan panjang field 32. Mengapa 32? Ya… karena password yang akan disimpan di sini adalah terenkripsi. Untuk enkripsi nanti kita akan gunakan MD5() termodifikasi.

OK… langkah kedua kita siapkan form pendaftaran usernya.

register.php

<form method="post" action="submit.php">
<table border="0">
<tr>
<td>Masukkan Username </td>
<td><input name="username" type="text"></td>
</tr>
<tr>
<td>Masukkan Password </td>
<td><input name="pass1" type="password"></td>
</tr>
<tr>
<td>Ulangi Password </td>
<td><input name="pass2" type="password"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit"></td>
</tr>
</table>
</form>

Perhatikan… pada form di atas terdapat dua isian untuk password. Mengapa tidak hanya satu isian saja? Dengan mengisi password lebih dari satu kali akan memastikan bahwa password yang dimasukkan adalah benar dari sisi ejaannya.

Selanjutnya kita buat script untuk pemrosesan registrasi user ini.

submit.php

<?php
$username = $_POST['username'];
$password1 = $_POST['pass1'];
$password2 = $_POST['pass2'];

// cek kesamaan password
if ($password1 == $password2)
{
mysql_connect("namahost", "dbuser", "dbpass");
mysql_select_db("dbname");

// perlu dibuat sebarang pengacak
$pengacak = "NDJS3289JSKS190JISJI";

// mengenkripsi password dengan md5() dan pengacak
$password1 = md5($pengacak . md5($password1) . $pengacak);

// menyimpan username dan password terenkripsi ke database
$query = "INSERT INTO user VALUES('$username', '$password1')";
$hasil = mysql_query($query);

// menampilkan status pendaftaran
if ($hasil) echo "User sudah berhasil terdaftar";
else echo "Username sudah ada yang memiliki";

}
else echo "Password yang dimasukkan tidak sama";

?>

Anda boleh membuat pengacak yang lain, atau mengkombinasikan sendiri bentuknya, misalnya $password1 = md5($pengacak.md5($pengacak.$password1.$pengacak).$pengacak) atau yang lain.. It’s up to you, yang jelas jangan menggunakan $password1 = md5($password1);

Nah selanjutnya… misalkan kita buat skenario bahwa terdapat dua buah halaman (halaman 1 dan halaman 2) dalam sistem yang membutuhkan autentifikasi user sebelum masuk ke dalamnya.

OK… untuk autentifikasi, kita buat form loginnya.

0 Responses so far.

Posting Komentar