SQL Injection
SQL injection adalah serangan yang memanfaatkan kelalaian dari website yang mengijinkan user untuk menginputkan data tertentu tanpa melakukan filter terhadap malicious character. Inputan tersebut biasanya di masukan pada box search atau bagian-bagian tertentu dari website yang berinteraksi dengan database SQL dari situs tersebut. Perintah yang dimasukan para attacker biasanya adalah sebuah data yang mengandung link tertentu yang mengarahkan para korban ke website khusus yang digunakan para attacker untuk mengambil data pribadi korban.
Untuk menghindari link berbahaya dari website yang telah terinfeksi serangan SQL injection, kita dapat menggunakan aplikasi tambahan seperti NoScript yang merupakan Add-ons untuk aplikasi web browser Firefox. Meskipun tidak terlalu sempurna, setidaknya kita dapat mengurangi kemungkinan menjadi korban.
Statement sql bukanlah bahasa pemrograman seperti pascal,Delphi atau visual basic , statemen sql biasanya digunakan bersama sama dengan bahasa pemrograman lain pada saat mengakses database , pada ilustrasi diatas , untuk mencocokan user yang login , maka digunakan statemen sql yang kurang lebih sebagai berikut :
Select * from admin where username = input_username
And password = input_password
Sebagai contoh apabila kita sebagai administrator dengan username = administrator dan password = admin bermaksud login maka sql statemennya sebagai berikut :
Select * from admin where username = ‘administrator’ and
Password = ‘admin’
Dapat dipastikan bahwa apabila field username terdapat record administrator dengan filed password terdapat admin penulis dapat melewati proteksi dan masuk kehalaman berikutnya ,akan tetapi apabila sebaliknya ,maka akan keluar pesan kesalahan yang kurang lebih isinya kita tidak bisa masuk ke halaman berikutnya , lalu bagaimana kalau penulis memasukan input ‘ or ‘’=’ pada username dan password , perhatikan perubahan statemen sql berikut ini:
Select * from admin where username = ‘’ or ‘’ = ‘’ and
Password = ‘’ or ‘’=’’
Logika OR menyebabkan statement membalikan nilai false jadi true sehingga kita bisa masuk sebagai user yang terdapat pada record pertama dalam table admin ( record pertama biasanya administrator) , dan bagaimana kalau kita hanya mengetahui username saja tapi passwordnya tidak , misalkan : username = administrator , caranya cukup sederhana , pada text box tempat menginput username isi dengan “administrator’—“ sedangkan pada textbox password boleh diisi sembarang misalkan ‘ or ‘’=’ maka statement sql akan berubah menjadi :
Select * from admin where username = ‘ administrator ‘—“
And password = ‘’ or ‘’=’’
Tanda “—“ (dua tanda minus) di sql server berarti akhir dari statement sql sehingga perintah dibelakannya tidak dieksekusi lagi.
Untuk web admin , bagaimana cara mencegahnya , jangan izinkan user menginput selain karakter a - z atau A - Z atau 0 – 9 , selain dari pada itu ditolak pada saat pengecekan.