Home » Hacking » SQL Injection: Pengertian, Tujuan dan Cara Mencegahnya

SQL Injection: Pengertian, Tujuan dan Cara Mencegahnya

by Millatul Wahidah
by Millatul Wahidah

Terdapat berbagai jenis serangan terhadap aplikasi ataupun website. SQL injection menjadi salah satu serangan yang masih banyak dilakukan para hacker. Serangan ini dapat menyebabkan kerugian bisnis dan juga kerusakan pada database sebuah aplikasi atau situs web. Situs web merupakan target yang paling sering mendapatkan SQL injection.

Apa itu SQL Injection?

Sebelum membahas SQL injection, penting untuk mengetahui pengertian SQL. Structured Query Language (SQL) merupakan bahasa query yang digunakan untuk mengakses, mengubah, dan memanipulasi data dalam basis data (database).

Database yang berbasis SQL diantaranya seperti PostgreSQL, MySQL, SQL server, Oracle, MongoDB, dan lainnya.

Sementara SQL injection (SQLI) merupakan sebuah teknik yang digunakan hacker untuk mendapatkan akses pada sebuah sistem database yang berbasis SQL.

SQL injection telah dilakukan sejak tahun 1990 dan semakin berkembang dengan adanya berbagi tools untuk melakukan serangan ini.

SQLi juga didefinisikan sebagai vektor serangan umum yang menggunakan kode SQL dengan tujuan manipulasi database untuk mengakses Informasi yang tidak ditampilkan.

Dalam beberapa kasus hacker dapat memperoleh akses backdoor ke dalam sistem yang mengarahkan akses jangka panjang yang menyebabkan gangguan dalam waktu yang lama.

Serangan SQL injection jenis cybercrime yang dapat mengancam keamanan sebuah website. Database, password, email, data pribadi hingga aset berharga menjadi sasaran dari serangan SQL injection. Dampak lain dari serangan ini adalah privasi pengguna website dapat disalahgunakan untuk hal-hal ilegal seperti penipuan.

Hacker biasanya menggunakan query SQL untuk mengakses database. Injeksi kode dilakukan tanpa proses otentikasi kemudian melakukan manipulasi seperti mengubah, menghapus dan menambahkan data-data pada website.

Serangan SQL injection pada umumnya memanfaatkan celah dari sebuah website, khususnya website yang tidak memasak firewall atau sistem keamanan lainnya. Pada kasus tertentu, para hacker bahkan dapat menembus apa yang ada dibalik firewall.

Beberapa website resmi organisasi dan perusahaan pernah mendapatkan serangan ini seperti Reserve Bank of New Zealand, the Australian Securities and Investment, telecommunication company Singtel, dan banyak lainnya.

SQL injection pada umumnya terbagi menjadi tiga kategori yaitu SQLi im band (klasik), SQLi Infersial (blind), dan SQLi out of band. Klasifikasi jenis SQL injection didasarkan pada metode yang digunakan untuk mengakses data PGN dan potensi kerusakannya.

SQL injection dapat dideteksi dengan menggunakan serangkaian tes sistematis terhadap celah atau titik masuk dalam sebuah website atau aplikasi.

Tujuan SQL Injection

SQL injection dilakukan oleh para hacker dengan berbagai tujuan. Berikut beberapa tujuan SQL injection:

1. Otentikasi Bypass

Hacker bertujuan masuk ke dalam website atau aplikasi untuk mendapatkan akses penuh administratif tanpa harus menggunakan autentifikasi seperti password atau pergeseran nama pengguna yang sah.

Meskipun banyak aplikasi telah menggunakan 2FA atau two-factor authentication dan One Time Password (OTP), hacker dapat meretas baypass 2FA.

Hacker menggunakan sistem otomatis yang dapat menduplikasi data dan mengubah password untuk masuk sebuah akun pengguna.

Sebuah aplikasi dapat mencegah bypass 2FA jika menerapkan 2FA untuk setiap perubahan yang dilakukan pengguna seperti mengganti password.

2. Pencurian Informasi

Dalam serangan SQL injection hacker ingin mendapatkan informasi dari database. Informasi-informasi tersebut dapat berupa daftar pengguna, data sensitif perusahaan, data pribadi pengguna atau pelanggan.

Data pribadi pengguna dapat meliputi informasi seperti password, nomor telepon, alamat, kartu kredit dan aset berharga lainnya. Data pengguna atau pelanggan dapat dimanfaatkan untuk tujuan ilegal seperti penipuan ataupun kejahatan lainnya.

3. Modify Data

Modify data dapat dilakukan oleh hacker terhadap data yang tersimpan di database. Hal ini menyebabkan database yang tersimpan menjadi tidak valid.

Hacker menggunakan SQL injection untuk memasuki deface halaman web atau memasukkan link berbahaya atau sebuah konten ke dalam halaman web yang terkena serangan.

4. Delete Data

Hacker melakukan compromised kesiapan data dengan menghilangkan atau menghapus berbagai informasi atau data yang tersimpan di database. Hal ini dilakukan karena hacker bertujuan merusak informasi dan audit yang ada dalam database.

Jika sebuah website tidak memiliki backup data maka akan sangat merugikan sehingga perlu melakukan backup data secara berkala untuk menghindari hal tersebut.

5. Command Execution

SQL injection digunakan oleh para hacker untuk melakukan perintah eksekusi melalui server database untuk menyerang semua yang ada pada website. Hacker melakukan aktivitas compromise pada sistem operasi target

Cara Kerja SQL Injection

Dalam membangun sebuah website atau aplikasi, para developer memperhatikan kemungkinan serangan SQL injection. Hal ini karena SQL injection memiliki banyak dampak berbahaya terhadap website ataupun aplikasi.

Penyerang biasanya mengincar celah keamanan yang ada pada database. SQL injection biasanya terjadi ketika sebuah website meminta pengguna untuk input username. Ketika database berhasil diakses, hacker akan melakukan berbagai tujuannya.

Untuk penjelasan lengkapnya, berikut cara kerja SQL injection:

1. Menggunakan Celah Keamanan pada Database

Hacker menargetkan celah keamanan tetapi sebuah website pada form log in. Langkah selanjutnya, melalui form log in, hacker akan memasukkan kode dengan query SQL yang kemudian diproses oleh database sebagai perintah.

Ketika seorang user melakukan proses login, aplikasi atau website akan menjalankan validasi dengan query SQL. Query SQL digunakan untuk menjalankan perintah, seperti pengambilan, penghapusan dan pembaruan data.

Pengguna mengisi kolom username dan password yang terdapat pada form login sebagai langkah untuk mengamankan sistem dari user yang tidak terdaftar dalam database sehingga hanya pengguna yang terdaftar yang dapat login ke dalam sistem.

Misalnya seorang pengguna dengan username ‘Ryu’ dan memiliki password ‘1234abcd’. Database akan menjalankan query SQL berikut:

SELECT *FROM users WHERE username = 'ryu'--' AND password = ''

Pada contoh lain, dengan mengganti password dari username menjadi kode-kode SQl seperti berikut:

password = 'OR 1=1'

Hasilnya akan berhasil login karena SQL injection menggunakan logika biner dalam melakukan serangan terhadap sebuah website.

2. Tahap Validasi SQL Query

SQL query seperti contoh pada poin sebelumnya memberikan perintah kepada database untuk memvalidasi. Kemudian database memberikan informasi login user tanpa memeriksa password dari penggunna dengan username ‘ryu’.

3. Database Berhasil Diakses

Kerentanan SQL injection memungkinkan hacker mendapatkan akses lengkap ke semua data di server database. Di beberapa database, hacker dapat mengakses sistem operasi menggunakan server database. Hacker menggunakan SQL injection sebagai vektor awal dan kemudian menyerang jaringan internal di belakang firewall.

Cara Mencegah SQL Injection

SQL injection sangat berbahaya sehingga pengelola website perlu melakukan tindakan pencegahan terhadap serangan ini. Terdapat beberapa cara efektif untuk mencegah serangan SQLI. Sebagian besar SQLI dapat dicegah dengan menggunakan query berparameter.

Berikut cara mencegah SQL injection yang bisa dilakukan:

1. Melakukan Validasi Input

Validasi input data merupakan teknik penulisan kode yang dapat mengidentifikasi penggunaan yang tidak sah.

Cara ini dianggap sebagai cara terbaik namun praktiknya tidak mudah karena sulit untuk memindahkan semua input legal dan ilegal tanpa menyebabkan kesalahan yang mengganggu user experience (UX) dan fungsionalitas website.

Validasi input data dapat dilakukan dengan dua metode yaitu whitelisting dan blacklisting. Kedua metode tersebut merupakan metode penyaringan data dan metode menolak data.

Langkah ini dilakukan untuk melakukan filter terhadap masukan yang dilakukan setiap pengguna terutama ketika menggunakan sebuah karakter kutip tunggal. Karakter kutip tunggal merupakan salah satu cara yang digunakan hacker untuk melakukan SQL injection.

2. Mengatur Form Input Box

Form input box disesuaikan agar from nama hanya bisa diisi dengan karakter atau huruf saja. Jika untuk pengisian nomor telepon maka batasi dengan numbering sehingga dapat mencegah SQL injection.

Selain itu batasi jumlah karakter pada input box agar lebih aman. Misalnya untuk input nama berikan batasan 25 karakter atau menyesuaikan dengan kebutuhan.

Langkah mengatur input box dapat mencegah percobaan SQL injection. Hacker akan terkendala dalam menuliskan kode injeksi dengan jumlah karakter yang tersedia.

3. Mematikan (Offline) Error Handling

Adanya pemberitahuan error dapat memudahkan an-nahl am menemukan apabila terjadi kesalahan pada website atau aplikasi yang dikembangkan. Namun notifikasi pesan error dari server dapat menjadi celah hacker untuk melakukan SQL injection.

Informasi debug atau ketika terjadi kesalahan pemrosesan yang terekspos merupakan celah untuk para hacker. Untuk mencegahnya tindakan yang harus dilakukan adalah mematikan atau offline fitur notifikasi pesan error yang keluar dari SQL server.

4. Menggunakan Parameter SQL Query

Parameterized query merupakan teknik yang mudah digunakan untuk mencegah SQL injection. Teknik ini dapat digunakan untuk membedakan SQL query dengan data pengguna. Hal ini akan menyebabkan kode yang ditulis oleh hacker tidak akan dapat mengubah struktur query pada website ataupun aplikasi.

5. Menonaktifkan Fitur Standar SQL

Fitur standar SQL seperti Extend Store Procedures dannStored procedures dapat menjadi target untuk diserang para hacker. Oleh karena itu fitur-fitur tersebut lebih baik untuk dinonaktifkan atau dimatikan.

6. Menggunakan SQL Escape String

SQL string merupakan kode yang dapat berfungsi untuk menambahkan karakter escape untuk mengubah karakter-karakter berbahaya seperti tanda kutip menjadi karakter lain. Karakter yang dianggap berbahaya akan difilter sehingga query SQL yang diinput tidak akan terbaca sebagai perintah.

7. Menggunakan WAF dan IPS

Mengamankan website atau aplikasi salah satunya dengan memasang Web Application Firewall (WAF) dan Intrusion Prevention System (IPS) untuk mencegah potensi serangan SQL injection.

WAF dapat mendeteksi IP yang memiliki reputasi buruk atau dianggap berbahaya. Selain itu juga akan melakukan tindakan pencocokan query pengguna dengan daftar query SQL yang berbahaya. Sementara IPS dapat menganalisa data yang memiliki rekam jejak berbahaya sehingga dapat mencegah komunikasi data yang tidak sah.

8. Melakukan Langkah Pengamanan Database

Database merupakan target dari serangan SQL injection sehingga perlu untuk melakukan langkah-langkah untuk mengamankan database.

Terdapat beberapa cara yang dapat dilakukan untuk mengamankan database, yaitu:

  • Mengatur user setting privilege atau hak akses pengguna untuk merubah data.
  • Melakukan pemisahan data seperti tabel username dan password untuk mencegah agar mendapatkan akses penuh.
  • Menerapkan enkripsi data pada form login atau tabel database.
  • Mengganti password akses database secara berkala pada semua akun.

You may also like