SQL Injection

Pengertian
Injection Flaws/Celah Injeksi, umumnya injeksi terhadap SQL (database) dari suatu aplikasi web. Hal ini mungkin terjadi apabila pengguna memasukkan data sebagai bagian dari perintah (query) yang menipu interpreter untuk menjalankan perintah tersebut atau merubah suatu data.
SQL injection adalah suatu teknik memanipulasi perintah SQL dalam query dari database dengan memasukkan data ke database server pada aplikasi database sehingga dapat dimanfaatkan untuk mengetahui, mendapatkan informasi yang terdapat disana, merubah database yang telah ada, melihat struktur database dan memanipulasi ferifikasi sistem.

Tujuan
Praktek seperti ini merupakan ilegal jika kita melihat dari sisi system tetapi adakalanya berguna sehingga itu semua tergantung niat dari yang melakukannya.
Ketika mengerjakan proyek di samsat lombok, login admin sudah beberapa tahun tidak dapat diakses, akhirnya dengan sql inject dapat di tembus. Bahkan jika mau , bisa mengubah kepemilikan BPKB motor harley sekalipun hanya dengan mengisi query dalam input login!!.

Jenis Serangan
a. Authorization Bypass
Contohnya : Username: ‘OR “=’ Password: ‘OR “=’
Masukan diatas berarti kita telah memberikan query sebagai berikut: SELECT username FROM users where Username = “OR “=” AND password = “OR “=”
b. Penggunaan perintah SELECT
c. Penggunaan perintah INSERT

Terdapat 2 cara dalam memasukan sql injection yaitu melalui bar url atau form yang sekiranya menggunakan query. Sql injecton ini akan di eksekusi apabila perintah strip_tags atau strip_slah tidak terdapat pada form inputan. Teknik ini memungkinkan kita masuk ke suatu system yang terproteksi sebagai siapa saja dengan hanya mengetahui username tanpa harus mengetahui passwordnya bahkan kita juga bisa login tanpa perlu mengetahui username dan password sama sekali.

Teknik
a. Basic
$query = “SELECT * FROM `user` WHERE `username` = $username”;
$username = “’’ OR 1 ”;
-> SELECT * FROM `user` WHERE `username` = ‘’ OR 1
b. More serious
$query = “SELECT * FROM `user` WHERE `username` = ‘$username’”;
$username = “’; DELETE FROM `user` WHERE 1 or username = ’”;
-> SELECT * FROM `user` WHERE `username` =‘’; DELETE FROM `user` WHERE 1 or username = ‘’

Contoh
Sintak di web:
Select * from admin where username = ‘administrator’ and Password = ‘admin’

Maka inputkan: ‘ or ‘’ = ‘
Didapatkan: Select * from admin where username = ‘’ or ‘’ = ‘’ and Password = ‘’ or ‘’=’’

Perintah: or ‘ ’=‘ ’menjadikan kondisi query menjadi true.
Untuk mencegah inputan diatas maka pada variabel penampung data post ditambahkan:
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
Untuk pengguna php.

Cara Pencegahan di PHP
Jangan pernah memasukan entitias luar secara langsung
Validasi setiap input yang akan diproses
exp: mysql_real_escape_string ();

Referensi:
http://bemd3fmipaunpad.blogspot.com/2009/12/seminar-hacking-black-or-white.html, http://arif.unpad.ac.id/?p=116

0 comment:

Post a Comment