Injeksi SQL: Apakah Ini Masih Ancaman? Bagaimana Cara Menghindarinya?
Diterbitkan: 2020-03-07Pelanggaran data sangat umum sehingga bahkan tidak mengejutkan lagi. Pelaku jahat bertujuan untuk mengumpulkan data sebanyak mungkin. Mereka mengincar kredensial login, informasi kartu kredit, atau rahasia dagang. Begitu mereka mendapatkan data tersebut, mereka menjualnya di web gelap.
Jika Anda tidak dapat mengetahui berapa banyak data yang mereka curi sejauh ini, dan berapa banyak yang mereka buang di web gelap, inilah angka yang mengkhawatirkan. Tahun lalu, penjahat mencuri dan menjual 620 juta akun dari enam belas situs web yang diretas saja. Ya, meretas enam belas situs web dapat menyebabkan begitu banyak kerusakan. Tapi tahukah Anda apa yang lebih buruk? Ribuan situs baru diretas setiap hari!
Penjahat dunia maya datang dengan metode peretasan baru setiap hari. Tapi bukan berarti mereka melupakan teknik lama, seperti injeksi SQL. Mereka masih menjadi salah satu vektor serangan paling umum yang mudah dieksekusi dan menghasilkan hasil yang bermanfaat.
- Apa itu SQL Injection dan Mengapa Berbahaya?
- Bagaimana Cara Kerja Injeksi SQL?
- Injeksi SQL dalam-band
- Injeksi SQL Buta
- Injeksi SQL out-of-band
- Apakah Ancaman Ini Masih Relevan?
- Tips Keamanan untuk Pencegahan
- Kata Akhir
Apa itu SQL Injection dan Mengapa Berbahaya?

SQL Injection, juga dikenal sebagai SQLi, adalah bentuk serangan injeksi, yang memungkinkan peretas mengeksekusi pernyataan SQL. Serangan injeksi adalah kategori luas dari vektor serangan yang berbeda. Tapi mereka semua mengizinkan aktor jahat untuk melakukan input berbahaya. Mereka bertindak sebagai perintah sistem, yang kemudian dieksekusi.
Pernyataan SQL paling sering digunakan untuk menambah atau mengambil data dari berbagai database. Banyak sistem manajemen terkenal seperti Microsoft SQL Server, Access, dan Oracle menggunakan pernyataan ini.
Karena banyak sistem manajemen basis data yang banyak digunakan menggunakan pernyataan SQL, peretas dapat mengeksploitasi sistem ini melalui suntikan SQL. Artinya, penjahat dapat mengakses dan mencuri data sensitif yang disimpan dalam database. Itu bisa termasuk yang berikut:
- hak milik intelektual.
- Informasi Kartu Kredit.
- informasi pengguna.
- alamat.
- rahasia perusahaan.
Direkomendasikan untuk Anda: Chrome vs Firefox: Perbandingan Kinerja, Keamanan & Privasi!
Bagaimana Cara Kerja Injeksi SQL?

Untuk mengeksekusi serangan injeksi SQL, peretas harus menemukan input pengguna yang rentan di dalam situs web atau aplikasi internal perusahaan.
Misalnya, korban menggunakan WordPress untuk situs webnya. Kode mungkin memiliki kerentanan SQL yang mengirimkan input pengguna langsung ke database tanpa sanitasi apa pun. Jika seorang peretas menemukan kerentanan itu, mereka dapat mengirim perintah ke database yang dimaksud. Kemudian, output database kembali ke browser dan memungkinkan peretas untuk menjalankan perintah yang berbeda. Dengan cara ini, mereka dapat mengunduh seluruh database, menyiapkan perintah baru, mengubah akun pengguna, atau membuat akun baru.
Ada tiga bentuk utama serangan injeksi SQL:
- Injeksi SQL dalam-band:
- Injeksi SQL berbasis kesalahan.
- Injeksi SQL berbasis serikat.
- Injeksi SQL buta:
- Boolean.
- Berdasarkan waktu.
- Injeksi SQL out-of-band.
Injeksi SQL dalam-band
Injeksi SQL In-band adalah salah satu jenis yang paling umum karena sederhana dan efisien. Di sini, penyerang menggunakan saluran komunikasi yang sama untuk melakukan serangan dan mengumpulkan hasil. Ini memiliki dua sub-variasi – SQL injection berbasis Error dan Union-based:
- Injeksi SQL berbasis kesalahan memungkinkan peretas menyebabkan database menghasilkan pesan kesalahan. Kemudian, mereka dapat menggunakan pesan kesalahan ini untuk mengumpulkan informasi tentang database itu sendiri.
- Injeksi SQL berbasis serikat memungkinkan pelakunya memanfaatkan operator UNION SQL. Ini menggabungkan berbagai pernyataan yang disediakan oleh database untuk mendapatkan satu respons HTTP. Respons seperti itu sering kali berisi data yang dapat dieksploitasi oleh peretas.
Injeksi SQL Buta
Suntikan Blind SQL bergantung pada pola perilaku server. Mereka jauh lebih lambat untuk dieksekusi. Peretas memancarkan muatan data dan memeriksa respons server untuk menganalisis strukturnya. Mereka menyebutnya "buta" karena data tidak langsung masuk ke peretas. Dengan demikian, mereka tidak dapat melihat informasi apa pun tentang in-band eksploit. Itu datang dalam dua variasi, yaitu Boolean dan Berbasis waktu:
- Variasi Boolean memungkinkan peretas mengirim kueri SQL, yang meminta database untuk mengembalikan informasi. Informasi dalam respons HTTP berubah bergantung pada hasil sebelumnya.
- Variasi berbasis waktu memungkinkan aktor jahat mengirim kueri SQL langsung ke database, yang memaksa database menunggu sebelum dapat bereaksi. Penyerang memperhatikan waktu yang dibutuhkan database untuk merespons dan memutuskan apakah kueri itu benar atau salah. Berdasarkan hasil, respons HTTP instan atau tertunda.
Injeksi SQL out-of-band
Injeksi SQL out-of-band memungkinkan peretas untuk menyerang database hanya jika fitur tertentu diaktifkan di server database. Ini adalah metode injeksi SQL yang paling tidak populer. Banyak peretas menggunakannya sebagai pengganti injeksi SQL berbasis Error dan Blind.

Serangan khusus ini merupakan opsi ketika peretas tidak dapat menggunakan media yang sama untuk melakukan serangan dan mengumpulkan informasi. Atau, mereka dapat menggunakan injeksi ini saat server tidak stabil dan lambat untuk melakukan dua jenis injeksi lainnya. Teknik ini membuat permintaan DNS dan HTTP untuk meneruskan data yang dicuri.
Anda mungkin menyukai: Kiat Penilaian & Manajemen Risiko Keamanan Siber untuk Usaha Kecil.
Apakah Ancaman Ini Masih Relevan?

Suntikan SQL adalah salah satu bentuk serangan siber agresif tertua. Namun itu masih sangat relevan. Proyek Keamanan Aplikasi Web Terbuka mencantumkan injeksi SQL sebagai ancaman nomor satu dua tahun lalu. Penyedia layanan cloud Akamai telah membuat State of the Internet Report, yang menemukan bahwa injeksi SQL bertanggung jawab atas 65% dari semua serangan berbasis web dari 2017 hingga 2019. Jadi, Anda dapat mengatakan bahwa injeksi SQL masih muncul di dua pertiga serangan web dalam beberapa tahun terakhir.
Pada kuartal pertama 2017, vektor ini bertanggung jawab atas 44% serangan lapisan aplikasi. Lebih buruk lagi, tidak ada bentuk lain dari vektor serangan aplikasi yang tumbuh secepat injeksi SQL. Pada November 2018, terjadi lonjakan signifikan lainnya. Telah ditunjukkan bahwa ada lebih dari 35 juta upaya serangan injeksi SQL. Para ahli berpendapat bahwa penyebab utama lonjakan ini adalah musim liburan. Ini adalah sesuatu yang harus diperhatikan oleh semua pemilik situs web – terutama jika mereka berada di industri ritel. Tetapi bahkan setelah musim liburan berakhir, injeksi SQL tetap menjadi ancaman yang perlu Anda waspadai.
Amerika Serikat adalah target utama serangan lapisan aplikasi. Itu telah menghadapi sekitar 3 miliar serangan hanya dalam 17 bulan. Korban populer lainnya termasuk Inggris, Jerman, Brasil, India, Jepang, Kanada, Australia, Italia, dan Belanda. Jadi, dapat diasumsikan bahwa ini masih merupakan ancaman besar dan semua perusahaan harus mengambil tindakan pencegahan yang ekstensif.
Tips Keamanan untuk Pencegahan

Tindakan terbaik bagi pengembang adalah memperkenalkan tindakan pencegahan untuk mencegah serangan terjadi. Ini adalah langkah-langkah pencegahan yang paling efektif:
- Validasi Input: Validasi Input memverifikasi apakah input pengguna tertentu diizinkan atau tidak. Artinya, format, panjang, dan jenis harus diterima secara kolektif. Sangat membantu untuk melawan perintah yang ditanam peretas di string input.
- Kueri Parameterisasi: Kueri parameterisasi adalah cara untuk melakukan pra-kompilasi pernyataan SQL yang berbeda. Itu kemudian menyimpan parameter sehingga pernyataan itu dapat dieksekusi. Ini memungkinkan database untuk mengenali kode dan membedakannya dari data masukan biasa.
- Prosedur Tersimpan: Mereka membutuhkan pengembang untuk mengelompokkan satu atau banyak pernyataan SQL ke dalam unit logis. Ini adalah bentuk kode yang dapat disimpan, seperti namanya, dan disimpan untuk nanti.
- Melarikan diri: Pengembang harus menggunakan fitur pelolosan karakter untuk memastikan bahwa DBMS tidak membingungkan masukan pengguna dengan pernyataan SQL.
- Firewall Aplikasi Web: Ini adalah salah satu metode teraman untuk mencegah serangan injeksi SQL. Firewall memantau lalu lintas yang beredar ke dan dari server. Ini mengidentifikasi permintaan mana yang berpotensi berbahaya dan mana yang tidak. Solusi ini cukup untuk banyak eksploitasi lainnya, jadi solusi ini selalu layak.
- Menghindari hak istimewa administratif: Pengembang tidak boleh menghubungkan aplikasi mereka ke database melalui akun dengan akses root. Jika tidak, peretas dapat memperoleh akses ke seluruh sistem dan menyebabkan kerusakan yang tidak dapat diperbaiki. Selain itu, pengembang harus memastikan bahwa setiap basis data memiliki kumpulan kredensialnya sendiri dengan batasan.
Anda mungkin juga menyukai: 10 Perangkat Lunak Keamanan Internet Terlaris (Antivirus & Keamanan).
Kata Akhir

Siapa pun yang khawatir tentang injeksi SQL juga tidak boleh melupakan kemungkinan serangan lainnya. Praktik keamanan dunia maya yang biasa berlaku: gunakan kata sandi yang kuat, pelajari cara mengenali ancaman, nyalakan VPN setiap kali Anda terhubung ke situs web atau basis data, dan sebagainya. Apa itu VPN dan apa fungsinya? Ini mengenkripsi lalu lintas online Anda kapan pun Anda online. Jadi, jika Anda mengirim permintaan SQL ke database Anda, hanya DB yang dapat mendekripsinya. Jika seseorang mencegat paket data yang dimaksud, mereka tidak akan memahaminya. Semakin siap Anda atau perusahaan Anda untuk semua jenis ancaman, semakin baik.
Hanya pengenalan tindakan pencegahan komprehensif yang memastikan bahwa injeksi atau serangan SQL tidak pernah berhasil. Bersiaplah untuk menginvestasikan banyak waktu, tenaga, dan uang untuk memastikan bahwa Anda memiliki alat yang tepat untuk melawan berbagai eksploitasi.
