Seperti yang sudah dijelaskan pada postingan sebelumnya, SQL injection merupakan salah satu jenis teknik penyerangan yang ditujukan ke database di server. Cara yang digunakan sebenarnya sangat sederhana, yaitu attacker berusaha memasukkan nilai inputan tertentu melalui form login.

Untuk mencegah SQL injection, kita harus mengamankan value yang dikirim field melalui form. Jangan pernah menggunakan parameter dari URL atau form tanpa melakukan validasi.

Berikut ini adalah contoh pengkodean yang buruk :

$pass=$_POST['password'];
$user=$_POST['username'];

$sql=mysql_query("select * from admin where password='$pass' and username='$user'");

Sekarang bagaimana cara membut kode diatas menjadi aman. Ada beberapa cara yang sering digunakan untuk mengamankan nilai input, yaitu:

Menggunakan mysql_real_escape_string()

Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contoh scriptnya :

$pass=mysql_real_escape_string($_POST['password']);
$user=mysql_real_escape_string(trim($_POST['username']));

$sql=mysql_query("select * from admin where password='$pass' and username='$user'");

Fungsi mysql_real_escape_string digunakan untuk mem-bypass karakter spesial dalam query SQL, sehingga jika attacker mnyertakan karakter seperti ‘ ! ^ ] ” dan lain sebagainya, maka fungsi ini tidak akan membaca karakter tersebut.

Menggunakan addslashes()

Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contoh scriptnya:

$pass=addslashes($_POST['password']);
$user=addslashes(trim($_POST['username']));

$sql=mysql_query("select * from admin where password='$pass' and username='$user'");

Encript Password

Hal lain yang perlu diperhatikan yaitu mengenskript password sebelum disimpan kedalam database. Anda dapat menggunakan MD5  atau fungsi enscript lainnya. Contoh

$pass=md5($_POST['password']);
$user=mysql_real_escape_string(trim($_POST['username']));

$sql=mysql_query("select * from admin where password='$pass' and username='$user'");