Apakah Anda seorang pemilik aplikasi atau website? Apabila iya, waspadai jenis kejahatan siber bernama SQL injection.
SQL injection menjadi salah satu jenis cyber crime yang banyak dilakukan karena hasil yang efektif dengan Langkah kerjanya cukup sederhana.
Buat mengetahui lebih dalam mengenai apa yang dimaksud dengan SQL injection, Langkah kerja, dan Teladan serangannya, simak artikel ini dengan Berkualitas.
Apa Itu SQL Injection
SQL injection adalah salah satu metode peretasan yang dilakukan peretas Buat menyalahgunakan celah keamanan pada aplikasi website yang menggunakan SQL.
Dalam hal ini, peretas akan memanfaatkan kerentanan website dengan menginput query SQL yang berbahaya pada halaman login atau URL parameter yang kemudian server akan mengembalikan data dari database sesuai dengan parameter yang diminta.
Ketika permintaan dengan kode berbahaya tersebut dieksekusi oleh database, peretas akhirnya mendapatkan akses data di dalam basis data yang memungkinkannya Buat mengubah maupun menghapus data.
Kejahatan siber yang menyebabkan kebocoran data tersebut Kagak lain karena peretas yang menemukan celah pada sistem keamanan aplikasi website yang menggunakan SQL.
Langkah Kerja SQL Injection
Pada dasarnya, Infus pada SQL ini Kagak akan berhasil Apabila sistem aplikasi atau website ini mengaplikasikan filter pada Watak yang diinput dalam form.
Seperti dengan memberlakukan validasi pada input query yang harus menggunakan Bilangan atau huruf dan Kagak menerima Watak lainnya (-, ?, *, dll).
Atau dengan membuang Watak yang berpotensi menempatkan aplikasi dalam bahaya seperti ‘1’ = ‘1’ yang bernilai True.
Mulanya, pada form login yang perlu Buat memasukkan username dan password, umumnya akan diisi dengan Watak huruf dan Bilangan.
Tetapi, seorang peretas yang Kagak mengetahui username dan password akan menginput ‘1’ = ‘1’ yang bersifat True pada SQL.
Ketika sistem Kagak mengaplikasikan filter yang hanya berlaku pada Watak huruf dan Bilangan, maka Watak lain yang dalam hal ini adalah ‘1’ = ‘1’ akan dianggap Betul dan query tersebut pun akan dieksekusi.
Teladan:
# Ketika user menginput myname sebagai username dan 98765 sebagai password.
SELECT * FROM users
WHERE username = ‘myname’ AND password = ‘98765’
Apabila username dan password tersebut Betul, maka user dapat login,
# Ketika peretas yang memasukkan ‘1’=’1’
SELECT * FROM users
WHERE username = ‘’ OR ‘1’=’1’ AND password = ‘’ OR ‘1’=’1’;
Karena ‘1’ = ‘1’ bernilai Betul, peretas dapat login dan menyusup ke dalamnya.
Dalam kondisi inilah peretas berhasil meng-hack sebuah aplikasi website, sehingga dapat mengakses, memodifikasi, dan menghapus data di dalam database.
Data yang dapat diakses mencakup seluruh data dalam basis data yang meliput informasi privasi pengguna, informasi bisnis, data produk, dan informasi Krusial lainnya yang berisiko pada sebuah instansi pemilik.
Jenis-Jenis SQL Injection

Classic/ In-band SQLi
Jenis SQL injection ini merupakan salah satu yang paling Lumrah digunakan karena kesederhanaan dan efisiensinya.
Dalam hal ini, peretas tipe in-band SQLi akan melancarkan serangan dan menghimpun hasilnya menggunakan kanal komunikasi yang sama.
Metode ini Mempunyai dua variasi yang meliputi:
Error-based SQLi
Mengacu pada error messages yang didapatkan dari tindakan yang dilakukan peretas. Pesan tersebut memungkinkan attacker menggunakan datanya Buat menghimpun informasi terkait struktur database.
Union-based SQLi
Mengacu pada pemanfaatan operator UNION yang memungkinkan peretas Buat menggabungkan hasil dua query atau lebih yang diberikan database menjadi HTTP tunggal. Data tersebut mungkin dapat dimanfaatkan Buat meretas data lainnya.
Blind/ Inferential SQLi
Blind SQL injection ini Kagak akan menerima error message seperti tipe klasik sebelumnya. Hal ini karena jenis ini mengacu pada respons dan tindakan yang akan diberikan oleh server.
Sehingga pada tipe ini, peretas akan mengobservasi dan meninjau tindakan server setelah menginput kode berbahaya pada sistemnya.
Hal ini memungkinkan prosesnya cukup lelet karena hasilnya akan bergantung dengan umpan balik yang diberikan server pada kode yang diinput oleh peretas. Inferential SQLi ini dikelompokkan menjadi dua, yakni:
Boolean
Peretas akan mengirim query SQL ke database Buat mendapatkan hasil atau respons dari aplikasi yang bernilai True atau False.
Setelah hasil didapatkan, maka peretas akan mengidentifikasi apakah terdapat perubahan respons HTTP atau tetap sama sehingga dapat disimpulkan nilai Betul atau salahnya, meskipun Apabila Kagak Terdapat data dari basis data yang dikembalikan.
Tetapi, serangan ini cukup lelet karena attacker perlu mencoba tiap karakternya Buat mendapatkan nilai Betul atau salah, terutama pada basis data yang besar.
Baca Juga: Mengenal Tipe Data Boolean, Fungsi, Operator, dan Contohnya
Time-based
Mulanya, peretas akan mengirim query SQL pada database Buat mengirimkan kembali hasilnya dalam waktu respons tertentu (dalam hitungan detik).
Dalam hal inilah peretas dapat mengenali nilai Betul atau salah dari waktu respons aplikasi, dimana respons yang membutuhkan waktu lebih lelet berarti Betul dan respons yang langsung dikembalikan bernilai salah.
Sehingga meskipun tipe ini juga lelet karena perlu menyebutkan Watak demi karakternya, time-based SQL injection ini Kagak mengandalkan data dari database Buat mengetahui keberhasilan serangannya.
Out-of-band SQLi
Merupakan tipe yang Kagak Lumrah digunakan dan akan diaplikasikan Apabila boolean, time-based, dan jenis lainnya Kagak dapat dideteksi. Seperti ketika Kagak adanya error message atau waktu respons aplikasi yang Kagak Kukuh.
Dalam hal ini, out-of-band SQLi memungkinkan peretas Buat meminta database mengirimkan data melalui server eksternal lain seperti DNS atau HTTP request.
Teladan Serangan SQL Injection

Berikut diantara Teladan serangan SQL injection adalah:
Pencurian data atau informasi
Dimana peretas akan menyerang secara langsung maupun Kagak langsung Buat mendapatkan informasi sensitif di dalam basis data.
Seperti pada pernyataan berikut dimana SQL dilakukan Buat mencari item dengan informasi nama pengguna dan nama item tertentu.
String userName = ctx.getAuthenticatedUserName();
String query = “SELECT * FROM items WHERE owner = “ ‘ “
- userName = “ ‘ AND itemname = ‘ “
- ItemName.Text + “ ‘ “;
Dalam hal ini, query menggunakan concatenation yang menggabungkan username dan itemname, sehingga penyerang yang menyadari celah tersebut akan memberikan string Book’ OR 5=5 Buat itemname.
SELECT * FROM items
WHERE owner = ‘Karina’ AND itemname = ‘Book’ OR 5=5’;
Karena 5=5 selalu bernilai True, maka itemname tersebut akan bernilai Betul. Sehingga, query dapat mengembalikan data dari seluruh tabel dan memungkinkan peretas Buat mengakses data sensitif.
Autentikasi sebagai administrator
Dimana penyerang akan menyusup ke dalam aplikasi website dengan akses administrator yang Kagak Absah, tanpa menginput username maupun password yang Betul.
Seperti pada query SQL berikut:
SELECT id FROM users
WHERE username = ‘ “ user + “ ‘ AND password = ‘ “ = pass “ “
Dalam hal ini query SQL menerapkan concatenation Buat menggabungkan data. Sehingga peretas dapat menginput password’ OR 5=5 daripada variable pass tersebut.
Sehingga SQL akan dijalankan menjadi:
SELECT id FROM users
WHERE username = ‘user’ AND password = ‘pass’ OR 5=5
Karena 5=5 selalu bernilai Betul, maka pernyataan di atas akan dinilai Betul meskipun username dan password itu salah. Lampau, pernyataan tersebut akan kembali pada ID pertama dalam tabel pengguna yang umumnya adalah admin.
Sehingga, peretas berhasil menyerang dan mendapatkan akses tanpa autentikasi dengan akses administratif.
Menginput Statement Berbahaya
Peretas akan menggunakan apostrof (‘) Buat Membangun sistem menjadi error. Hal ini akan diterapkan pada form yang memerlukan input nama depan dan nama belakang.
Teladan query SQL yang menerima input dari user:
SELECT id, firstname, lastname FROM authors
WHERE firstname = ‘ “ + firstName = “ ‘ AND lastname = ‘ “ + lastName + “ ‘
Ketika attacker memasukkan input sebagai berikut:
- Nama depan:karina’ex
- Nama belakang:Rachel
Maka query SQL yang dijalankan adalah:
SELECT id, firstname, lastname FROM authors
WHERE firstname = ‘karina’ex’ AND lastname = ‘Rachel’
Input pada nama depan dengan apostrof tersebut akan diidentifikasi sebagai error syntax. Kesalahan tersebut akan memberikan error message yang dapat dimanfaatkan peretas Buat membangun struktur database.
Demikian adalah penjelasan mengenai apa itu SQL injection beserta jenis, Langkah kerja, dan Teladan serangannya yang dapat mengancam keamanan suatu aplikasi website.
Hal ini tentu karena Anda perlu melakukan aksi pencegahan seperti menggunakan dua database, menerapkan batasan pada Watak parameter, dan Lagi banyak Tengah Buat melindungi aplikasi website.
Sandi Dharma sebagai perusahaan penyedia jasa pembuatan website, tentu menerapkan tips-tips Buat memastikan situs web yang dihasilkan akan Terjamin dan terhindar dari aksi kejahatan siber. Apabila Anda tertarik Buat mencoba Membangun website dengan layanan kami, silakan menghubungi kontak Sandi Dharma!