Header Ads

Apa itu SQL Injection? Bagaimana cara pencegahannya?



1.      Apa itu Sql Injection?
SQL Injection adalah salah satu serangan yang dilakukan oleh attacker kepada target melalui sebuah celah keamanan yang rentan atau kelemahan dalam suatu aplikasi maupun database. Celah tersebut seperti field input tidak difilter yang dapat menjadi jalan masuknya serangan SQL injection.
2.      Bagaimana cara kerja Sql Injection
Cara kerja dari serangan Sql injection bisa melalui celah kelemahan dalam suatu aplikasi maupun database, jadi attacker akan mencari celah-celah yang ada dalam suatu aplikasi. Bisa kita ambil contoh seperti celah dalam inputan yang dimasukan oleh pengguna. Dalam form input tersebut tidak menggunakan filter string apa saja yang masuk, jika form input tersebut tidak memakai filter maka attacker dapat melakukan SQL injection dengan mudah.
3.     Tahapan Sql Injection
-                  Mencari Website yang terdapat celah
Untuk mencari website yang dapat di lakukan SQL injection adalah dengan mencari di mesin pencarian seperti google, dll. Dengan memasukan keyword “.php?id=” tanpa tanda kutip, kita temukan sebuah website seperti dibawah:

Kita lihat website tersebut terlihat bagus dan aman-aman saja, tetapi beda lagi ketika kita menambahkan tanda (‘) dalam akhir url.


Namun setelah menyisipkan tanda (‘) di akhir url maka akan terlihat error dalam website tersebut yang bisa menjadi sebuah celah yang rentan dan dapat di lakukan SQL injection.
-                  
            Tahapan SQL Injection
a)      Cari terlebih dahulu website yang terdapat celah keamanan nya, yang dapat dilakukan SQL injection.
b)      Dalam melakukan sebuah serangan SQL injection kita harus bisa memanipulasi Query dalam website tersebut seperti.
Misalnya terdapat sebuah kode php yang didalamnya terdapat query untuk login kedalam halaman administrator:

(query yang terdapat dalam website tersebut)

Lalu kita manipulasi query tersebut supaya kita dapat masuk kedalam halaman administrator tanpa memiliki username atau password, cukup tambahkan (-- ) tanpa tanda kurung. Simbol yang kita tambahkan tersebut akan dibaca sebagai tanda komentar oleh SQL, jadi query AND password = ‘xxx’ akan dianggap sebagai komentar. Dan otomatis dengan hanya username saja dan password sembarang dapat masuk kehalaman administrator setelah kita mengetikan (csi’-- ) tanpa tanda kurung di form login dalam kolom username.


Lalu bagaimana jika kita tidak tahu username dan password nya.

Kita cukup memasukan (OR 1=1 -- ) tanpa tanda kurung, dan masukan username dan password sembarang, jadi ‘yyy’ OR 1=1 akan menghasilkan nilai true yang jika dalam source code tersebut jika nilai tersebut true maka dapat masuk kedalam halaman administrator, lalu ketikan (username_sembarang’ OR 1=1 -- ) tanpa tanda kurung dalam kolom username, dan masukan password sembarang. 



4.      Pencegahan terhadap serangan Sql Injection
Setelah membahas SQL injection diatas, lalu bagaimana cara mencegah supaya serangan SQL injection tersebut gagal pada website kita. Cara nya adalah dengan memfilter masukan/input yang terdapat dalam website tersebut, tambahkan pada source code website tersebut sebuah kode untuk memfilter inputan yang dimasukan.
Sebelum ditambahkan filter:

Sesudah ditambahkan filter:

Filter tersebut adalah mysqli_real_escape_string, jadi dengan memasukan kode tersebut sebelum inputan dimasukan ke query akan di cek terlebih dahulu.
Cara kedua yaitu dengan menggunakan mysqli_prepare:

cara yang kedua adalah cara yang paling dianjurkan.

Sekian untuk artikel kali ini, follow blog ini untuk mengikuti artikel-artikel selanjutnya :),
Terimakasih.

No comments:

Powered by Blogger.