Perangkat Lunak Pendidikan Indonesia

Wednesday, April 25, 2018

Mengantisipasi Serangan SQL Injection pada Form Login


Diantara hal-hal urgen yang sering dilupakan oleh para programmer pemula adalah kurang memperhatikan keamanan pada form login dan tidak mengantisipasi serangan SQL Injection pada form login admin web yang mereka buat, banyak cara hacker membobol website korban salah satunya adalah dengan cara login byPass atau SQL injection pada halaman form login.

Login byPass adalah dengan menggunakan injection nilai true misal 1=1. sekarang coba periksa web Anda, buka halaman login, pada username ketikkan admin' or 1=1 dan pada password sembarang atau samakan dengan username, jika halaman admin Anda berhasil dibuka berarti web Anda tidak aman

Dan masih banyak SQL Injection yang lain diantaranya adalah:
' or 1=1 limit 1 -- -+
' or 1=1
admin' or '1'='1'
dan lain-lain

Nah pertanyaannya adalah

Bagaimana cara mencegah serangan SQL Injection atau login byPass ?


Gampang nggak ribet kok. begini, mohon perhatikan dengan cermat ya..

Perhatikan source code ini
$pass=$_POST['password'];
$user=$_POST['username'];

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

Jika source code login Anda seperti kode di atas maka dipastikan web Anda tidak aman karena kode di atas termasuk kode yang buruk dikarenakan belum ada pengaman untuk karangkter tanda petik, titik koma, dan simbol-simbol yg lain, maka dari itu coba gunakan fungsi mysql_real_escape() atau mysql_real_escape_string() sehingga menjadi seperti berikut ini
$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'");

Keterangan : 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.

OK bro, silahkan dicoba, semoga sukses..

0 comments:

Post a Comment