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