Cara Mengantisipasi Serangan SQL Injection
Mengantisipasi serangan SQL Injection bukanlah hal yang mudah jika dilakukan oleh pemula. Karena SQL Injection menggunakan bahasa sql jadi untuk yang belum mengerti agak susah. Namun di google, forum-forum it, dan grup-grup yang bertebaran di dunia maya saya yakin sudah pernah menyinggung tentang SQL injection.
Apa Itu SQL Injection?
SQL injection adalah kegiatan menyisipkan perintah SQL kepada suatu statement SQL yang ada pada aplikasi yang sedang berjalan. Dengan kata lain SQL injection ini merupakan suatu tehnik pengeksploitasi pada web apilikasi yang didalamna menggunakan database untuk penyimpanan datanya. Terjadinya SQL injection tersebut dikarenakan security atau keamanan pada level aplikasi (dalam hal ini aplikasi web) masih kurang sempurna. Kurang sempurnanya adalah pada cara aplikasi meng-handle inputan yang boleh di proses ke dalam database. Misalnya pada suatu web yang terdapat fasilitas login, terdapat dua buah inputan pada umumnya, yaitu username dan password. Jika karakter yang masuk melalui dua buah inputan tersebut tidak difilter (disaring) dengan baik maka bisa menimbulkan efek SQL injection, ini dikarenakan biasanya inputan tersebut secara sistem akan menjadi bagian dari kriteria dari suatu perintah SQL di dalam aplikasi web-nya. Secara garis besar terjadinya SQL injection tersebut adalah sebagai berikut:
Tidak adanya pemfilteran terhadap karakter – karakter tanda petik satu ‘ dan juga karakter double minus -- yang menyebabkan suatu aplikasi dapat disisipi dengan perintah SQL. Sehingga seorang Hacker dapat menyisipkan perintah SQL kedalam suatu parameter maupun pada text area suatu form
Macam – Macam Teknik SQL Injection
SQL injection merupakan serangan yang ditujukan pada database dengan menginputkan query tanpa validasi atau ilegal. Untuk melakukan injection, penyerang dapat melakukan nya dengan beberapa teknik penulisan :
Tautologies Penyerang menginputkan query yanghasilnya selalu “True” :
Select * from users where username=’admin’ or1=1 --‘ and password=’’;
UnionQueries Penyerang menginputkan “UNION QUERY” untuk mendapatkan lebih banyak data :
Select bookTitle, ISBN from books where bookID = 1 UNION Select “hack”, balance from accounts where accNo = 3456 --;
Piggyback QueriesPenyerang menginputkan tambahan statement yang mempengaruhi hasil query :
Select * from users where username=’’; drop table accounts -- and password=’
Malformed Queries Penyerang menggunakan kerentanan pada hasil error message untuk mendapatkan informasi dari database :
Select * from books where bookID=convert(int,(select top 1 name from sysobjects where xtype =‘u’));
Inference Jenis serangan ini bergantung pada response-time pada web serveruntuk mendapatkan informasi :
Select * from users where username=’hello1’; select if( user() like 'root@%', benchmark(1000000, sha1('test')), 'false' ); --‘ and password=’’
Alternate Encoding Jenis serangan ini menggunakan kombinasi dari spesial karakter (seperti quote, dash dll ) untuk melewati skema pertahanan :
Select * from books where bookID=1;exec(char(0x730065006c00650063007400200040004000760065007200730069006 f006e00);
Metode Untuk Mengatasi Serangan SQL Injection
Metode untuk menghindari SQL Injection dapat dilakukan kedalam dua cara yaitu secara client-side dan server-side. Padametode client-Side yaitu menerima 'Shadow SQL Query' dari server-side dan melakukan pengecekan terhadap deviasi yang terjadi antara shadowquery dengan query dinamis yang dibentuk oleh masukan dari pengguna. Jika ditemukan adanya deviasi maka dapat dipastikan bahwa masukannya tidak benar (Malicious). Sedangkan dalam penelitian ini dikedepankan metode secara server-side. yaitu melalui sejumlah langkah antara lain:
1. Gunakan Prepared Statement atau Parameterized Query. Lebih sederhana dan lebih mudah untuk dimengerti dibanding query dinamis, Parameterized query mengirimkan setiap parameter kedalam lapisan query setelah semua kode SQL telah didefinisikan. Database dapat membedakan antara kode dan data, apapun masukan dari pengguna. Seorang penyerang tidak dapat merubah maksud query, meskipun SQL command telah disusupkan di dalamnya.
2. Lakukan validasi masukan. Autentikasi masukan dari pengguna dengan aturan-aturan yang telah didefinisikan seperti panjang, tipe dan filter lain jika diperlukan.
3. Matikan atau sembunyikan pesan-pesan error yang keluar dari server database.
4. Mengunci atau membatasi database anda. Jika aplikasi web Anda tidak memerlukan akses ke tabel tertentu, maka pastikan bahwa mereka semua tidak memiliki izin untuk itu. Jika hanya read-only maka akan menghasilkan laporan dari tabel hutang account anda maka pastikan anda menonaktifkan insert / update / menghapus akses.
Ok sekian artikel kali ini semoga membantu kalian dalam menghadapi serangan sql injection. Jika ada yang salah atau ada yang kurang saya mohon maaf. Sekian terima kasih
DONASI VIA PAYPAL
Bantu berikan donasi jika artikelnya dirasa bermanfaat. Donasi akan digunakan untuk memperpanjang domain https://vengeantech.blogspot.com/. Terima kasih.
Newer Posts
Newer Posts
Older Posts
Older Posts
Comments