Memahami SQL Injection dan Cara Mencegahnya

by

Wichaksono

February 26, 2022

Memahami serangan dari SQL Injection memang tidak lah mudah namun cara atau teknik ini dapat kita cegah dengan berbagai cara yang akan dibahas dalam artikel ini, Hacker dan peretas masuk ke dalam sebuah system karena ada celah yang sengaja atau lupa kita tutup.

Mencegah SQL Injection memang membutuhkan ilmu khusus bahkan tenaga ahli dalam bidang database namun ini akan lebih baik daripada database yang kita bangun memiliki nilai keamanan yang sangat rendah.

Pengertian SQL Injection

SQL Injection adalah salah satu teknik hacker terbilang sangat berbahaya karena teknik ini memanfaatkan celah atau port celah keamanan di dalam database suatu system baik website atau aplikasi.

Celah yang dimaksud adalah port atau kesalahan programmer menulis sebuah kode dalam bahasa pemrograman tertentu yang berhubungan langsung kedalam database terutama database SQL, kesalahan input pada form aplikasi atau website dari user tidak difilter secara benar sehingga membuka jalan Hacker ini masuk.

Hingga saat ini SQL Injection masih menjadi salah satu teknik terbaik bagi seorang hacker dalam melakukan serangan terhadap system database suatu aplikasi maupun website. Ditambah saat ini semua sudah terhubung ke internet maka kita wajib melakukan pemeriksaan berkala terhadap sebuah system yang kita bangun.

Contoh teknik SQL Injection

Teknik termudah dalam praktik teknik sql injection adalah melalui UI/UX form suatu website atau aplikasi, Misalnya pada field username harusnya username berisi dengan huruf, angka dan karakter umum, tetapi UI form pada sebuah website terkadang bisa disisipkan dengan karakter unik lainnya.

Kelemahan ini belum ada solusinya karena terkait dengan baris kode program, jadi hacker sampai saat ini masih bisa menyisipkan karakter seperti unik seperti (:;-,=’), sehingga hacker bisa dengan mudah memasukan query atau nilai pada database SQL atau MySQL kita.

Tujuan SQL Injection

Sebelum memahami cara mencegah SQL injection ada baik nya kita memahami tujuan dari SQL injection yang dilakukan oleh para peretas website atau aplikasi. Secara umum tujuan mereka sangat jarang menguntungkan pihak pemilik website atau aplikasi. Berikut beberapa tujuan SQL Injection yang umum dilakukan:

1. Bypass Otentikasi Atau Jalur Backdoor

Bypass otentikasi adalah cara memasuki sebuah system tanpa menggunakan atau mengetahui password dan username yang benar, tujuan nya tentunya adalah mengetahui informasi atau data apa saja di dalam sebuah website atau aplikasi.

2. Pencurian Informasi Dan Data

Tujuan peretas atau hacker masuk ke dalam sebuah website atau aplikasi menggunakan SQL injection tentu besar kaitanya dengan data yang di muat di dalam website atau aplikasi tersebut. Biasanya para hacker ini melakukan atas dasar perintah yang berhubungan dengan data yang telah publish dalam sebuah website.

3. Delete Data

Hacker masuk kedalam sebuah website melalui cara SQL Injection, berarti mereka sudah memiliki full akses terhadap database sebuah system. Jadi mereka dengan bebas menghapus informasi dan data yang tidak mereka hendaki untuk publish secara online di website tersebut.

4. Modify Data

Selain menghapus atau delete data, karena hacker memiliki otoritas penuh kedalam sebuah database sebuah system mereka juga bisa memodify dan memasukkan data dan informasi yang ada di dalam sebuah website atau aplikasi target mereka.

5. Command Execution

Serangan SQL Injection yang satu ini sangat berakibat fatal terhadap sebuah system, namun bukan hanya system mereka juga memiliki command execution terhadap server tempat bernaung suatu database. Sehingga, mereka dengan sesuka hati run and stop sebuah website hanya dengan satu kali perintah baris program.

Pencegahan dini SQL Injection

Setiap system, baik website atau aplikasi memiliki keunggulan dan kelemahannya tersendiri, untuk meminimalisir semua dampak buruk yang diakibatkan dari serangan hacker atau peretas dengan teknik SQL Injection, Anda dapat melakukan beberapa langkah cara mencegah sql injection seperti berikut:

1. Filter Jenis Karakter Pada Field Input Box

Jika anda berniat membuat form UI input box username, maka Anda batasi panjang dan tentukan jenis karakter apa saja yang dapat di terima oleh system form Anda. Jangan biarkan semua karakter diterima oleh system anda.

2. Batasi Panjang Field Input Box Dengan Filter

Jika ada seorang programmer maka anda tidak asing dengan membuat sebuah database, ketika Anda membuat database di MySQL contohnya Anda akan menjumpai jumlah karakter yang mampu di tampung di dalam satu field, ingat tujuan dari panjang field adalah mengantisipasi serangan pada SQL injection.

3. Filter User Dari Apa Yang Mereka Input

Sistem cerdas adalah system yang memahami apa yang end user inginkan, ketika user menginput karakter-karakter khusus berikan sebuah trigger khusus di system anda untuk otomatis mendeteksi tersebut supaya system anda mampu dengan sendirinya mencegah SQL Injection.

4. Mematikan Error Handling

Beberapa programmer baru sering lupa dalam urusan ini, ketika mereka membuat sebuah website misalnya menggunakan PHP, maka setiap ada sintaks error mereka lupa untuk mematikan notif error tersebut dan hasilnya notif error muncul di halaman end user. Salah satu bahan informasi seorang hacker adalah membaca notif error yang di tampilkan sebuah system.

5. Nonaktifkan Fitur Standart SQL

Setiap programmer mampu membuat sebuah database, di saat ini fitur database hanya bermodal kan memahami UI programmer sudah bisa membuat sebuah database dengan mudah, namun database bukan hanya memiliki fitur standart yang ada di SQL seperti Stored Procedures dan Extend Stored Procedures, namun ada sebuah study khusus tentang normalisasi database.

6. Setting Privilege

Yang terpenting dari semua pembahasan diatas adalah berikan hak untuk semua user atau admin dari sebuah system atau setting privilege, Anda setidaknya meminimalisir tindakan yang ditimbulkan seseorang akibat dari full akses yang di berikan.

7. Enkripsi Database

Ada baiknya lakukan backup database secara rutin dan enkripsi data yang bersifat pribadi yang menjadi jalan masuk dari SQL injection ini seperti username dan password, gunakan enkripsi yang tidak biasa dilakukan seperti informasi yang bertebaran di internet contoh pengalaman kami sendiri gunakan kode enkripsi MD5 dan salt lalu bungkus enkripsi tersebut didalam sebuah array.

8. Mengunci Database

Mengunci database sangat baik dan mudah dilakukan namun sangat jarang mempraktikkan ilmu ini, karena alasan nanti password dan username nya takut lupa dan sebagainya, padahal teknik ini sangat baik dilakukan dan teknik terbaik cara mencegah SQL injection untuk menjaga database SQL Anda aman dari serangan.

Related Post