Ketahui Bahaya SQL Injection Demi Keamanan Data
Beberapa bulan terakhir ini kita dikejutkan dengan adanya hacker yang mendapatkan data dari pejabat negara. Tentu saja hal ini menjadi ancaman yang cukup serius terhadap keamanan sebuah website. Perkembangan teknologi juga berbanding lurus dengan pertumbuhan kejahatan. Penjahat selalu mencari celah yang bisa dimanfaatkan untuk mendapatkan keuntungan.
SQL Injection merupakan jenis kejahatan baru akibat perkembangan teknologi digital. SQL injection bahkan masuk dalam kategori cybercrime, yaitu tindakan ilegal yang dilakukan seseorang untuk mencuri data. Serangan injeksi SQL ini dapat mencakup pencurian dan manipulasi database. Bayangkan jika database yang diretas itu adalah database aplikasi keuangan yang kita gunakan, tentu tidak akan sulit untuk mendapatkan email, password, dan data pribadi lainnya. Sangat berbahaya bukan?
Definisi SQL Injection
SQL Injection adalah teknik peretasan yang menyalahgunakan celah keamanan di lapisan SQL berbasis data aplikasi. Kesenjangan terbentuk karena input yang tidak tersaring dengan baik selama produksi, sehingga menimbulkan kesenjangan yang dapat disalahgunakan.
Biasanya hacker menggunakan perintah atau query SQL dengan tools tertentu untuk mengakses database. Injeksi kode dilakukan memungkinkan mereka untuk login tanpa proses otentikasi. Setelah upayanya berhasil, peretas bebas menambah, menghapus, dan mengubah data di situs web.Dalam banyak kasus, ini menyebabkan perubahan terus-menerus pada konten atau perilaku aplikasi. Kemudian SQL Injection juga dapat dilakukan dengan mengubah logika aplikasi dengan memodifikasi query untuk mengacaukan logika aplikasi seperti serangan UNION yang memungkinkan untuk mendapatkan data dari tabel database yang berbeda.
SQL Injection dapat menyerang berbagai jenis website yang menggunakan database SQL, seperti MySQL, Oracle, SQL Server dan lain-lain. Secara umum, serangan SQL Injection terjadi ketika administrator situs tidak menerapkan firewall atau sistem keamanan yang memadai. Hal ini sering kali memungkinkan penyerang melihat data yang biasanya tidak dapat mereka pulihkan. Ini dapat mencakup data milik pengguna lain atau data lain apa pun yang dapat diakses oleh aplikasi itu sendiri.
Jenis SQL Injection
Jenis SQL Injection berdasarkan cara mengakses data backend dan seberapa besar potensi kerusakan yang ditimbulkannya, ada 3 jenis, yaitu:
1. In-band SQL Injection
In-band SQL Injection adalah jenis serangan yang paling umum. Dengan jenis serangan SQL ini, penyerang menggunakan saluran komunikasi yang sama untuk menyerang dan mengumpulkan data. Teknik ini memiliki dua jenis serangan yaitu error-based SQL injection dan union-based SQL injection. Dengan menggunakan teknik teknik error-based SQL injection, penyerang memperoleh informasi tentang struktur database ketika mereka menggunakan perintah SQL untuk menghasilkan pesan kesalahan dari server database. Sedangkan union-based SQL injection digunakan oleh penyerang untuk menggabungkan pernyataan pilihan ganda dan mengembalikan respons HTTP. Seorang penyerang dapat menggunakan teknik ini untuk mengekstrak informasi dari database.
2. Inferential SQL Injection
- Time-based SQL Injection: Penyerang mengirimkan kueri SQL ke database dan menyebabkan database menunggu beberapa detik sebelum memberikan respons terhadap kueri tersebut sebagai benar atau salah.
- Boolean SQL Injection: Penyerang mengirimkan kueri SQL ke database dan mengamati respons dari aplikasi yang memberikan hasil benar atau salah.
3. Out-of-band Sql Injection
Out-of-band SQL injectionadalah jenis serangan yang paling jarang terjadi. Dengan jenis serangan SQL injection ini, penyerang menggunakan saluran komunikasi berbeda untuk menyerang dan mengumpulkan hasil. Penyerang menggunakan metode ini jika server terlalu lambat atau tidak stabil untuk menggunakan jenis serangan SQL injection lainnya.
Alur SQL Injection
Proses serangan SQL injection dapat dibagi menjadi beberapa tahapan, antara lain:
- Peretas akan mencari celah keamanan di database. Biasanya celah keamanan terhadap SQL injection terdapat pada form login.Saat pengguna masuk, situs mengautentikasi dengan permintaan.
- Jika terjadi serangan SQL injection, hacker dapat login tanpa menggunakan password menggunakan SQL Comment Sequence dengan tanda minus ganda (–). Jadi query nya juga akan berubah.
- Validasi SQL query digunakan. Query yang digunakan oleh hacker akan diurutkan oleh database. Oleh karena itu, sistem akan mengizinkan peretas ini untuk login dengan pengguna tanpa memverifikasi kata sandi.
- Akses basis data berhasil. Jika Anda sudah mencapai langkah ini, berarti peretas telah memperoleh akses ke situs web tanpa verifikasi. Kini para hacker bahkan bisa menjadikan dirinya sebagai administrator sehingga bisa dengan mudah mengakses seluruh data yang ada bahkan melakukan perubahan terhadapnya.
Alasan Harus Waspada dengan SQL Injection
Setelah melihat alur kerja serangan SQL injection, kita juga perlu melihat beberapa alasan mengapa SQL injection dinilai sangat berbahaya, antara lain:
- Verifikasi koneksi dapat dengan mudah disusupi. Peretas dapat mengakses situs web atau aplikasi tanpa nama pengguna dan kata sandi yang valid.
- Privasi pengguna situs web atau aplikasi mungkin terancam.
- Data dari suatu website atau aplikasi dapat dengan mudah dicuri.
- Database dimodifikasi
- Data basis data historis mungkin dihapus. Jika hacker telah mengubah dirinya menjadi admin maka ia dapat menghapus semua data historis dari database karena tidak ingin terdeteksi.
- OS Command Execution dan pembobolan Firewall
Pencegahan yang Bisa Dilakukan
- Atur format pengisian. Misalnya kita bisa mengisi form dengan tipe data tertentu, selain itu kita bisa membatasi jumlah maksimal karakter yang bisa dimasukkan. Misalnya pola nama hanya boleh menggunakan huruf dan dibatasi 15 karakter.
- Validasi input data. Input data terbagi menjadi 2 jenis, yaitu whitelisting (menyaring data dengan menerima inputan data yang sudah pasti aman), dan blacklistening (menolak input data yang diketahui berbahaya, seperti penggunaan karakter tertentu)
- Gunakan parameterized SQL query. Tujuannya adalah untuk membedakan antara SQL query dan data yang dimasukkan pengguna.
- Gunakan SQL Escape String, dimana kita akan menggunakan serangkaian kode yang menambahkan karakter escape atau mengganti karakter yang dianggap berbahaya dengan karakter lain.
- Matikan notifikasi error. Fitur ini dapat dimanfaatkan oleh para hacker untuk mencari celah pada website yang kita miliki.
- Menggunakan WAF (Web Application Firewall) dan IPS (Intrusion Prevention System)