SQL injection adalah salah satu jenis ancaman kejahatan dalam dunia digital atau sering kita sebut dengan istilah cyber crime.
Tak dapat dipungkiri, fenomena cyber crime kini semakin marak seiring dengan perkembangan teknologi.
SQL injection sendiri merupakan serangan yang cukup membahayakan, bahkan ia menempati posisi posisi ketiga dengan risiko serangan paling tinggi.
Serangan SQL injection melibatkan pencurian serta manipulasi database, termasuk data pribadi penggunanya dan bahkan hingga aset finansial.
Lalu, bagaimanakah cara mengatasinya?
Yuk langsung saja simak ulasan mengenai apa itu SQL injection, dampak, cara kerja, dan tips-tips menghindarinya berikut!
Apa itu SQL Injection?
SQL injection adalah salah satu teknik pemanfaatan celah keamanan yang terdapat pada database aplikasi.
Perlu diketahui, SQL injection adalah salah satu bentuk ancaman cyber crime akibat adanya kesalahan dalam pemfilteran input dalam pembuatannya, sehingga terdapat celah yang disalahgunakan.
Secara lebih lanjut, SQL injection adalah langkah berupa injeksi kode terhadap suatu celah yang terdapat pada keamanan database di dalam sebuah website maupun aplikasi.
Kesimpulannya, SQL injection adalah teknik dalam dunia cybercrime untuk memakai celah keamanan dalam SQL yang ada di dalam basis data aplikasi.
Cara Kerja SQL Injection
Setelah mengetahui apa itu SQL injection, selanjutnya kamu harus mengetahui pula bagaimana cara kerjanya, yaitu:
1. Hacker Mengincar Celah Keamanan Database Terlebih Dahulu
SQL injection adalah incaran para hacker dalam dunia cyber crime. Di sini, hacker akan mencari celah keamanan pada website atau aplikasi yang dituju, umumnya pada form login-nya.
Berikutnya, SQL injection adalah metode yang digunakan oleh penyerang melalui input kode melalui form login tersebut dengan query SQL yang bakal diproses database sebagai perintah.
Nah apabila query yang dikirim menunjukkan detail login user, maka proses login dapat dikatakan berhasil. Namun jika tidak, maka proses login akan gagal atau ditolak.
Baca juga: Apa itu MySQL? Pengertian, Fungsi dan Cara Kerjanya
2. Proses Validasi Atas SQL Query yang Digunakan
Berikutnya, query SQL yang sudah diinput akan memerintahkan database melakukan proses validasi.
Dengan begitu, SQL injection adalah ancaman yang terdapat di dalam database di mana database akan memberikan informasi login dari user tanpa mengecek terlebih dahulu passwordnya.
Selanjutnya dalam hal ini, SQL injection adalah hal penting yang akan segera dimanfaatkan hacker untuk bisa login ke halaman website.
3. Database Berhasil Diakses
Sampai di sini, hacker pun berhasil masuk ke website tanpa proses verifikasi.
Lebih parahnya lagi, SQL injection adalah metode yang digunakan para hacker untuk bisa mengendalikan website dengan menjadikan dirinya sebagai administrator pada web tersebut.
Jika hal ini sampai terjadi, tentu saja semua data website hingga data pribadi pengelola bisa dihapus.
Setelahnya, website pun sudah dikuasai sepenuhnya oleh hacker.
Contoh SQL Injection
SQL injection adalah bentuk kecurangan dari para hacker yang melakukan eksekusi dengan melakukan manipulasi terhadap query SQL standar dengan tujuan untuk melakukan eksploitasi terhadap input database.
Adapun contoh SQL injection di antaranya adalah sebagai berikut.
Semisal, untuk membuat informasi menarik terhadap produk tertentu, bisa diubah menjadi http://www.jaghost.com/items/items.asp?itemid=999 atau 1 = 1.
Nantinya, akan dihasilkan query contoh SQL Injection seperti ini:
SELECT ItemName, ItemDescription
FROM Items
WHERE ItemNumber = 999 OR 1=1
Mengingat adanya statement bahwa 1 = 1 selalu benar, maka semua nama maupun deskripsi suatu produk yang ada di dalam database akan dikembalikan semuanya oleh query, bahkan yang tidak memenuhi syarat pun bisa diakses.
Para hacker tersebut juga bisa memanfaatkan sortiran karakter secara tidak tepat agar perintah SQL tersebut dapat berubah.
Adapun contoh SQL injection di sini adalah adanya penggunaan titik dua untuk memisahkan kata dengan kata lainnya.
Misalnya, input http://www.jaghost.com/items/iteams.asp?itemid=999; DROP TABLE USERS dengan contoh SQL injection melalui query berikut:
SELECT ItemName, ItemDescription
FROM Items
WHERE ItemNumber = 999; DROP TABLE USERS
Dengan begitu, semua database dari user dapat hilang. Contoh SQL injection dengan query bisa dimanipulasi dengan statement UNION SELECT.
Menggabungkan dua query SELECT yang tidak berhubungan dimaksudkan agar dari tabel database yang berbeda bisa diperoleh data.
Adapun contoh SQL injection di sini adalah dengan memasukkan input http://www.jaghost.com/items/items.asp?itemid=999 UNION SELECT user-name, password FROM USERS, menghasilkan contoh SQL Injection melalui query berikut:
SELECT ItemName, ItemDescription
FROM Items
WHERE ItemID = ‘999’ UNION SELECT Username, Password FROM Users;
Dengan memakai statement UNION SELECT, nantinya query akan menggabungkan antara deskripsi dan juga nama item 999 dengan hal lain yang dianggap menarik nama dan password bagi setiap user yang ada di database.
Baca juga: Cara Import Database MySQL dengan phpMyAdmin untuk Pemula!
Dampak Negatif SQL Injection
Selanjutnya, akan lebih baik jika kamu juga mengetahui apa saja dampak negatif dari SQL injection. Yuk simak!
1. Menembus Verifikasi Login dan Mengancam Privasi Pengguna
Dengan adanya SQL injection, hacker bisa login ke halaman website atau aplikasi tanpa menggunakan username ataupun password yang benar.
Artinya, keberadaan fitur verifikasi pengguna yang digunakan sebagai filter dalam mengakses website sangat mudah untuk dilewati.
Tentunya, kondisi ini bisa membahayakan website sasarannya.
2. Data Website Dicuri dan Dimodifikasi
SQL injection adalah salah satu bentuk ancaman cybercrime yang melakukan aksinya melalui query SELECT dan OUTPUT, sehingga para hacker dapat mengakses semua data pada tabel database sasarannya.
Contoh SQL injection di sini dapat berupa username, pin rekening bank, kata sandi akun, dan data penting lainnya.
SQL injection adalah bentuk ancaman berupa pencurian data melalui akses informasi rawan di atas, data pelanggan, data pribadi, serta dokumen rahasia perusahaan pun dapat dicuri.
Tentunya, SQL database adalah teknik yang sangat berbahaya apabila terjadi di dalam suatu website transaksi keuangan misalnya bank, e-commerce, dan lainnya.
Contoh SQL injection yang terjadi di sini adalah para penyerang dapat memodifikasi data transaksi dari para nasabah bank.
Kemungkinan terburuknya, para hacker dapat melakukan pemindahan saldo rekening dari nasabah ke dalam rekening milik hacker tersebut.
3. OS Command execution dan menembus firewall
Dampak negatif lainnya dari SQL injection adalah para hacker bisa saja mengakses operating system (OS).
Apabila SQL injection berhasil menyerang akses masuk ke OS, maka hacker tersebut dikatakan menggunakan OS Command Execution untuk melakukan serangan pada jaringan internal yang terdapat pada firewall.
Bisa disimpulkan, bahwa SQL injection adalah ancaman berbahaya yang tidak hanya menyerang secara tunggal, tetapi juga membuka peluang terjadinya serangan berbahaya lainnya.
Baca juga: Ini Cara Membuat Database MySQL di phpMyAdmin, Mudah!
Cara Mengatasi SQL Injection
Setelah mengetahui dampak negatif SQL injection, ternyata cukup membuat para pengguna cemas, ya?
Lantas, adakah solusi untuk mencegahnya?
Langsung saja, simak penjelasan cara mengatasi SQL injection berikut ini.
1. Pengaturan Format Kotak Pengisian
Pertama, cara mengatasi SQL Injection adalah dengan mengatur jenis karakter dalam kotak pengisian.
Adapun contoh SQL injection di sini adalah dengan mengatur form nama lengkap agar dapat diisi dengan menggunakan huruf saja.
Sedangkan, untuk form nomor peserta dapat diisi hanya dengan menggunakan nomor.
Selain itu, cara lainnya dalam mengatasi SQL injection adalah dengan membatasi banyaknya karakter di dalam form pengisian.
Contohnya, form nama lengkap diberi batasan maksimal 20 karakter.
Pembatasan yang dilakukan di sini bisa meminimalisir adanya risiko kode injeksi SQL dalam form pengisian website milikmu.
2. Melakukan Validasi Data
Berikutnya, cara mengatasi SQL injection adalah dengan melakukan validasi input data.
Validasi data di sini terbagi menjadi dua metode, yaitu blacklisting dan whitelisting.
Blacklisting adalah metode atau cara mengatasi SQL injection dengan menolak masuknya input data yang telah diketahui berbahaya dan buruk, seperti (&, ;, `, ‘, \, “, |, *, ?, ~, <, >, ^, (, ), [, ], {, }, $, \n, dan \r).
Sementara itu, whitelisting adalah kebalikan dari blacklisting yang merupakan metode atau cara dalam menyaring data yang hanya menerima input data yang sudah pasti aman.
Intinya, input data akan langsung ditolak apabila tidak masuk ke dalam daftar whitelist ini.
3. Memanfaatkan Parameterized SQL Query
Selanjutnya, cara mengatasi SQL Injection adalah dengan menggunakan prepared statement atau parameterized query yang merupakan salah satu teknik sederhana yang cukup mudah.
Metode ini berfungsi agar para pengguna tahu bagaimana cara membedakan data input dari pengguna dengan SQL query.
Misalnya saja dengan menggunakan contoh SQL injection menggunakan kode berikut:
PreparedStatement statement = connection.prepareStatement(“SELECT * FROM products WHERE category = ?”);
statement.setString(1, input);
ResultSet resultSet = statement.executeQuery();
Kode tersebut memuat perintah query berupa SELECT dan WHERE yang apabila dibaca hanyalah berupa data biasa.
Jadi, walaupun hacker menginput perintah query di dalam kotak input, query yang digunakan tadi tidak bisa menggantikan struktur query website dan aplikasi milikmu.
Baca juga: Apa itu Query SQL? Mengenal Fungsi dan Contohnya
4. Manfaatkan SQL Escape String
Cara mengatasi SQL injection selanjutnya adalah dengan menggunakan SQL Escape String yang berguna untuk mencegah masuknya query SQL yang berbahaya ke dalam database website.
Lantas, apa itu SQL injection dengan memanfaatkan SQL Escape String?
Maksudnya yaitu gabungan kode yang berguna dalam penambahan karakter escape, dengan mengubah satu jenis karakter yang diprediksi berbahaya (‘) diubah ke karakter lain (\’).
Adapun contohnya yaitu SQL injec’tion diubah ke SQL injec\’tion.
$kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
Kode tersebut bisa mengubah karakter semula (‘) menjadi suatu pesan yang merupakan hasil dari filter, yakni SQL injec\’tion. Dengan begitu, query SQL yang dimasukkan tidak akan terbaca sebagai perintah yang berbahaya.
5. Menonaktifkan Notifikasi Error
Kehadiran notifikasi error akan membuatmu lebih mudah dalam mengembangkan sebuah website.
Namun perlu diingat, apabila website yang aktif telah selesai digunakan, maka jangan lupa untuk mematikan notifikasi error tersebut.
Adanya fitur notifikasi error memang dapat meminimalisir adanya kesalahan pada website atau aplikasi yang sedang dalam proses pengembangan.
Namun perlu dipastikan juga bahwa penting untuk mematikannya ketika website sudah masuk fase penggunaan.
Sebab, fitur notifikasi error pada SQL injection adalah fitur yang bisa disalahgunakan oleh para hacker di luar sana.
Dari error yang muncul, hacker bisa mengambil celah keamanan dari suatu website. Setelahnya, hacker akan lebih leluasa untuk melangsungkan SQL injection.
Baca juga: Apa itu Trojan, Pengertian, Contoh dan Cara Mengatasinya
6. Mengamankan Database
Agar database aman dari ancaman SQL injection, berikut adalah beberapa cara yang dapat kamu lakukan.
1. Menetapkan hak akses atau user privilege pada database agar jumlah dari user yang bisa mengubah ataupun memodifikasi data menjadi terbatas.
2. Memisahkan data kredensial yang bersifat vital, misalnya password dan tabel username.
Dengan begitu, apabila terdapat hacker yang memperoleh akses masuk ke username, belum pasti bisa untuk mengakses passwordnya.
3. Menjalankan enkripsi data di dalam tabel database dengan maksud agar username dan password user akan aman dan terlindungi.
Dengan cara itu, maka hacker tidak akan mengetahui isi data dalam akun walaupun sudah berhasil mengaksesnya.
4. Memperbarui kata sandi secara berkala pada seluruh akun yang bisa mengakses database.
7. Mengaplikasikan WAF dan IPS
Cara terakhir untuk mengatasi SQL injection adalah dengan memasang Web Application Firewall (WAF) yang berguna untuk menyaring kemungkinan terjadinya serangan oleh SQL injection maupun serangan dari siber lainnya.
Cara kerja SQL injection melalui WAF adalah dengan menyamakan query yang akan masuk lalu mendaftar query terupdate mengenai SQL apa saja yang berbahaya.
Banyak ragam WAF terkini yang mampu untuk mendeteksi reputasi IP agar bisa melakukan pencarian IP yang dianggap berbahaya.
Selain menggunakan WAF, contoh SQL injection lain yang bisa digunakan adalah Intrusion Prevention System (IPS). IPS berguna untuk memantau traffic yang ada di jaringan dan OS.
Selain itu, IPS juga berguna untuk mendeteksi data-data yang beredar dan akan memilih data mana yang berbahaya melalui track recordnya.
Dengan begitu, contoh SQL injection lainnya yaitu IPS yang berfungsi untuk mengatasi terjadinya transaksi data yang tidak resmi.
Nah, itulah penjelasan tentang apa itu SQL injection, cara kerja, dampak, serta cara mengatasi SQL injection sebelum menyerang aplikasi kamu.
Intinya, SQL injection adalah serangan siber yang memanfaatkan celah keamanan lapisan database.
Maraknya ancaman kejahatan di dunia digital membuat kamu perlu meningkatkan proteksi pada website dan aplikasi agar tetap aman. Semoga artikel ini membantu!
Jika kamu tertarik membaca lebih banyak informasi tentang teknologi, kunjungi blog Jagoan Hosting untuk tips dan informasi lainnya.