Raih Beasiswa & Jadi Data Analyst untuk Petinggi Perusahaan di Indonesia

Mengenal In-Band SQL Injection & Pencegahannya

Belajar Data Science di Rumah 22-Februari-2023
https://dqlab.id/files/dqlab/cache/900c2bb2fa960f9e42921e98aadfc58e_x_Thumbnail800.jpeg

Kejahatan digital seperti SQL injection merupakan tindakan yang mungkin terjadi karena perubahan arus transformasi digital yang pesat. Bahkan injection dianggap merupakan ancaman nomor satu terhadap keamanan aplikasi web. Sehingga penting bagi para pekerja di bidang IT untuk mempelajari lebih lanjut terkait SQL injection dan cara pencegahannya. 


Ada banyak tipe SQL injection. Diantaranya In-Band SQL injection, inferential SQL injection, dan out-of-band SQL injection. Kali ini akan dibahas lebih detail tentang in-band SQL injection. Jenis injection ini paling umum terjadi, loh. Seperti apa contohnya? Simak terus penjelasan di bawah ini!


1. Apa Itu SQL Injection?

SQL

SQL injection adalah teknik serangan injeksi kode yang memanfaatkan celah keamanan yang terjadi pada layer basis data dari sebuah aplikasi. Hal ini terjadi sebagai akibat dari data yang diinputkan oleh pengguna tidak dilakukan validasi dan dimuat di dalam baris perintah query SQL. Dengan demikian menjadikan sebagian data yang diinputkan pengguna tersebut diperlakukan sebagai bagian dari kode SQL.


Dampak dari teknik serangan SQL Injection cukup beragam, beberapa diantaranya yaitu:

  • Melakukan bypass terhadap mekanisme otentikasi. Teknik serangan ini memungkinkan penyerang untuk masuk ke dalam aplikasi dengan hak akses administratif, tanpa menggunakan username dan password yang valid.

  • Melakukan modifikasi data. Melalui teknik serangan ini penyerang juga dapat melakukan perubahan terhadap konten data yang tersimpan di dalam basis data, atau memanfaatkan celah keamanan ini untuk memasukan konten yang berbahaya ke dalam halaman web.

  • Melakukan compromised terhadap ketersediaan data. Dengan melakukan penghapusan terhadap seluruh data yang tersimpan di dalam basis data, teknik serangan ini juga berpotensi terhadap aspek ketersediaan (availability) dari sistem tersebut.

  • Melakukan pencurian informasi. Serangan ini juga dapat dimanfaatkan oleh penyerangan untuk melakukan pencurian informasi sensitif yang tersimpan di dalam basis data. 

  • Eksekusi perintah jarak jauh. Melalui teknik serangan ini penyerang juga dapat melakukan perintah eksekusi melalui database yang memungkinkan penyerang untuk mengambil alih host atau target.


Baca juga : Saatnya Belajar SQL, Kenali Rekomendasi Query SQL Bagi Pemula


2. Mengenal In-Band SQL Injection

SQL

In-band SQL injection merupakan tipe serangan SQL injection yang paling umum dan mudah untuk dieksploitasi. In-band SQL injection terjadi ketika penyerang dapat menggunakan kanal komunikasi yang sama baik untuk melancarkan serangan maupun memperoleh hasil dari serangan. Sebagai contoh, apabila penyerang dapat menggunakan jenis komunikasi alamat http untuk menyebarkan serangan ke backend dan dapat hasil di saluran yang sama. Terdapat dua tipe yang paling umum dari in-band SQL Injection, yaitu:

  • Error-based SQL Injection. Teknik serangan ini sangat bergantung pada pesan kesalahan yang dihasilkan oleh server database untuk memperoleh informasi mengenai struktur dari database. Pada beberapa kasus, teknik ini sendiri cukup bagi penyerang untuk melakukan enumerasi terhadap keseluruhan database. 

  • Union-Based SQL Injection. Teknik serangan ini memanfaatkan operator SQL UNION untuk mengkombinasikan hasil dari dua atau lebih perintah SELECT ke dalam satu hasil yang kemudian dikembalikan sebagai bagian dari HTTP response.


3. Contoh In-Band SQL Injection

SQL

Jenis In-band SQL injection yang paling sederhana adalah ketika penyerang dapat memodifikasi query asli dan menerima hasil langsung dari query yang dimodifikasi. Sebagai contoh, mari kita asumsikan bahwa query berikut dimaksudkan untuk mengembalikan data pribadi pengguna saat ini dan menampilkannya di layar.


SELECT * FROM users WHERE user_id LIKE 'current_user'


Jika query ini dijalankan dalam aplikasi menggunakan rangkaian string sederhana, peretas dapat menuliskan ‘curent_user’ menjadi %'--. Sehingga query yang dikirimkan ke database menjadi


SELECT * FROM users WHERE user_id LIKE '%'--'


Kutipan tunggal melengkapi pernyataan SQL dan tanda hubung ganda (–) berarti sisa baris diperlakukan sebagai comment. Oleh karena itu, aplikasi menjalankan query berikut.


SELECT * FROM users WHERE user_id LIKE '%'


Baca juga : Catat! Ini 3 Keuntungan Belajar SQL dalam Mengolah Data


4. Cara Mengatasi In-Band SQL Injection

SQL

Secara umum untuk melakukan serangan dengan teknik SQL Injection umumnya penyerang menjalankan dua tahapan proses yaitu:

  • Tahapan riset. Penyerang umumnya melakukan riset dengan mengirimkan berbagai macam nilai yang tidak diharapkan sebagai argumen input, kemudian dia mempelajari respon dari aplikasi, kemudian dia menentukan apakah target URL rentan atau tidak terhadap SQL Injection.

  • Tahap serangan. Setelah melakukan riset mengenai kerentanan pada aplikasi, maka pada tahapan ini penyerang membuat payload tertentu sebagai nilai input dari argumen sehingga payload tersebut akan diinterpretasikan sebagai bagian dari perintah SQL ketimbang hanya data. Kemudian database melakukan eksekusi terhadap perintah yang telah dibuat oleh penyerang.

Dengan demikian, diperlukan beberapa cara untuk mengatasi adanya SQL injection. Hal yang bisa dilakukan diantaranya:

  • Sesuaikan input box. Apabila form untuk input box tujuannya adalah untuk menuliskan nama, maka diberikan khusus untuk karakter huruf saja. Untuk mengisi kolom nomor telepon maka cukup diisi dengan numbering atau angka saja sehingga tindakan penyerangan SQL Injection bisa dihindari agar itu semua tidak terjadi.

  • Batasi input box. Agar lebih memperketat keamanan sistem dalam setiap box dibatasi untuk jumlah karakternya. Sebagai contoh untuk pengisian nama paling tidak berikan kurang lebih 30 karakter atau bisa lebih, disesuaikan dengan kebutuhan sehingga meminimalisir percobaan penyerangan SQL Injection yang masuk akan terkendala dan dicegah oleh jumlah karakter yang tersedia.

  • Filter user. Melakukan filter terhadap inputan setiap user, terutama yang menggunakan karakter dengan kutip tunggal (‘) atau validation input. Dikarenakan hal tersebut bisa menjadi salah satu trik yang dilakukan hacker untuk SQL Injection.

  • Mematikan error handling. Apabila terjadi error message, maka perlu melakukan tindakan offline atau mematikan fitur notifikasi pesan error yang keluar dari SQL server. Apabila, sampai ada pesan error, ini bisa menjadi kesempatan untuk hacker melakukan deep eksploitation pada percobaan SQL Injection.

Kejahatan bisa terjadi dimana saja, bahkan di dunia digital sekalipun. Segala sesuatu yang berhubungan dengan data customer memang sudah selayaknya untuk dilindungi. Serangan SQL Injection bukanlah satu-satunya kejahatan yang akan kita temui, karena ada banyak sekali kejahatan siber yang mengancam website atau aplikasi yang kita miliki. Sehingga kita harus terus waspada dan terus meningkatkan keamanan website.


Namun sebelum masuk ke tingkat advance tersebut, ada baiknya belajar hal-hal yang bersifat fundamental dari SQL. Nah, DQLab menjadi solusi atas keresahan Sahabat DQ. Kalian bisa belajar mengasah kemampuan SQL melalui modul pembelajaran di website DQLab. Modul ini sangat cocok untuk pemula yang belum memiliki pemahaman terhadap SQL atau bukan dari background IT. Agar bisa mengaksesnya, kalian cukup berlangganan untuk menjadi member premium di DQLab. Segera Sign Up di website dan nikmati kemudahan belajar meski untuk pemula!


Penulis : Dita Feby 

Editor : Annissa Widya

Berikan Penilaian Kamu

Mulai Karier
sebagai Praktisi Data
Bersama DQLab

Daftar sekarang dan ambil langkah pertamamu untuk mengenal Data Science.

Buat Akun Gratis Dengan :

https://dqlab.id/files/dqlab/file/data-web-1/data-user-2/50040333a3a5d46bf130664e5870ebc6/8be7fae4b69abead22aa9296bcab7b4b.jpg Sign-Up dengan Google

https://dqlab.id/files/dqlab/file/data-web-1/data-user-2/50040333a3a5d46bf130664e5870ebc6/d0aa879292fb427c0978d2a12b416e98.jpg Sign-Up dengan Facebook

Atau Buat Dengan :