Kamis, 06 Juni 2013

Posted by Parlindungan Sinabariba |
Kali ini Spellcaster akan coba bahas tentang SQL injection dan langkah yang sederhana untuk Mencegah SQL Injection,

Apa itu SQL injection ?

SQL injection adalah salah satu teknik hacking yang memanfaatkan celah pada script programnya (dalam hal ini PHP) yang memungkinkan hacker menyisipkan kode SQL dan dieksekusi di server. (::noob:: SQL adalah bahasa pemograman untuk database (basis data), dimana  database inilah yang menampung data-data yang digunakan oleh website atau aplikasi internet)




Mengapa bisa terjadi SQL injection ?
Pada dasarnya SQL injection dapat terjadi karena tidak adanya validasi oleh program terhadap inputan dari user. Pada kali ini, Spellcaster cuma membatasi pembahasan hanya mengenai SQL injection yang dilakukan pada form admin web.

Pada kode PHP login admin pada umumnya digunakan syntax seperti berikut :

SELECT * FROM `admin` WHERE pass='$ps' AND name='$nm'

pada bagian $ps adalah variabel yang menampung hasil inputan password yang dilakukan pada form admin, (waktu kita disodori masukkan username sama password itu lo !! :D) dan $nm adalah variabel yang menampung hasil inputan username.

SQL injection dapat dilakukan dengan memasukkan 'or''=' pada form admin, baik sebagai username maupun passwordnya. Jadi di bagian username masukkan 'or''=' dan di bagian password juga masukkan 'or''='.

Sehingga didapatkan hasil querynya sebagai berikut :

SELECT * FROM `admin` WHERE pass=''or''='' AND name=''or''=''

Eksekusi logika dari query diatas adalah,

  1. pass='' bernilai false
  2. ''='' bernilai true
  3. name='' bernilai false
  4. ''='' bernilai true
sehingga apabila dirangkai menjadi false OR true AND false OR true, yang pasti akan menghasilkan nilai true, sehingga query dijalankan dengan baik.

Untuk penanganan yang sederhana,
Apabila kita ingin melakukan pemberian session, kita berikan seleksi kondisi tidak hanya tergantung pada jumlah baris atau
fetch array tapi kita juga melakukan validasi kedua.
(dimana validasi kedua ini kita lakukan langsung pada PHP)
Sehingga pengecekkan kondisi sebelum pemberian session antara lain :

$koneksi = mysql_connect('localhost', 'root', 'password');
$query = "SELECT * FROM `db`.`admin` WHERE pass='$ps' AND name='$nm'";
$result = mysql_query($query, $koneksi);
$row = mysql_fetch_row($result);
if($row == 1 && $ps == $row['pass'])
{
  berikan session ...
}
else
{
  peringatan salah ...
}

Kita lihat pada bagian yang tercetak tebal, di situ kita melakukan validasi akhir yang berupa pencocokan variabel inputan password dengan database yang sebenarnya, jadi selain dicek dengan menggunakan SQL pada syntax SELECT * FROM `db`.`admin` WHERE pass='$ps' AND name='$nm' Kita juga melakukan validasi dengan menggunakan syntax PHP.

Sekian Artikel tentang Mencegah SQL Injection dari Spellcaster,
Lihat juga : Membuat Game Snake dengan C++










0 komentar:

Posting Komentar