Pengertian SQL Injection Beserta Cara Kerja dan Cara Mencegah SQL Injection

Seperti yang telah Anda ketahui bahwa teknologi informasi sudah berkembang sangat pesat hingga saat sekarang ini. Sebagai contoh, internet sudah membawa kita kedalam dunia baru yang disebut dengan cyberspace, dimana kita dapat berkomunikasi melalui komputer yang menawarkan berbagai aktivitas dari dunia nyata ke dunia virtual atau maya tanpa adanya batas jarak dan waktu.

Akan tetapi, teknologi internet menyebabkan sebagian pihak memanfaatkan kesempatan yang ada untuk melakukan berbagai jenis kejahatan, seperti pengancaman, pencurian atau kejahatan lainnya di dunia maya. Salah satu teknik yang paling umum dilakukan oleh para hacker muda dalam melakukan serangan adalah SQL injection.

Nah, pada kesempatan kali ini saya akan menjelaskan mengenai pengertian SQL injection, cara kerja beserta cara mencegah terjadinya SQL injection.

Pengertian SQL Injection

Pengertian SQL Injection

SQL injection atau biasa yang dikenal dengan sebutan SQLi adalah suatu teknik penyerangan web dengan menggunakan kode SQL (Structured Query Language) yang berbahaya untuk memanipulasi database. Tindakan ini termasuk kedalam kategori hacking, dimana penyerang akan mencari celah keamanan dari suatu website.

Sebagai contoh sederhana, biasanya pengguna diminta untuk memasukkan username dan password yang hanya dapat berupa karakter angka dan huruf. Sedangkan user memasukkan karakter lain, seperti petik tunggal (‘), strip (-) atau tanda (=). Karakter-karakter tersebut merupakan bagian dari perintah umum yang digunakan untuk dapat berinteraksi dengan database. Keadaan itulah yang dimanfaatkan oleh penyerang untuk dapat mengakses informasi yang tersimpan didalam database.

Suatu website dibangun dengan menggunakan bahasa pemrograman, seperti HTML, PHP, ASP dan lainnya. Pada umumnya, beberapa bahasa pemrograman seperti PHP atau Perl akan melakukan eksekusi perintah setelah menerima inputan dari pengguna tanpa adanya filter terlebih dahulu. Oleh karena itu, Anda perlu berhati-hati dengan melakukan pemilihan terhadap jenis database yang akan digunakan. Sebab, ada jenis database yang memberikan hak terhadap low privilaged users untuk dapat mengakses password user lain yang terdapat didalam database.

Cara Kerja SQL Injection

SQL injection menjadi salah satu tindakan hacking yang digemari oleh para attacker. Salah satu alasannya adalah masih banyak website yang kurang memerhatikan celah keamanan sistemnya yang bisa dimanfaatkan oleh pengguna yang tidak bertanggung jawab.

Padahal, jika dibiarkan tindakan SQL injection ini akan memberikan dampak buruk terhadap website tersebut, seperti menampilkan daftar pengguna yang tidak sah, penghapusan seluruh isi tabel, mematikan database atau bahkan penyerang memperoleh hak administratif kedalam sistem database. Lalu, bagaimana cara kerja dari SQL injection?

Cara Kerja SQL Injection

Disini saya akan menjelaskan cara kerja SQL injection secara sederhana. Setiap pengguna dapat mengakses suatu sistem melalui proses login. Proses login ini digunakan untuk menyaring dan mengetahui identitas dari pengguna yang mengakses sistem tersebut. Pengguna dapat mengisikan username dan password pada kolom isian yang biasanya terdapat di halaman pertama website.

Pada dasarnya, proses login sering diterapkan untuk meningkatkan keamanan (security) dari sistem tersebut sehingga pengguna yang tidak terdaftar dalam database tidak dapat masuk ke sistem itu. Akan tetapi, SQL injection ini dapat merusak keamanan yang telah dirancang sedemikian rupa.

Misalnya, terdapat pengguna yang memiliki username “Hakim” dan password “adaaja”. Jika pengguna melakukan inputan sesuai data tersebut, maka tidak akan menjadi masalah pada sistem database karena memang data itu yang tersimpan didalamnya. Kode SQL dapat dilihat berikut ini.

Select * from User where userName = ‘joko’ AND password = ’adaaja'

Akan tetapi, jika pengguna membuat username menjadi “Hakim #” maka karakter ‘#’ akan menyebabkan karakter selanjutnya tidak dianggap sebagai kode SQL. Akibatnya, maka username Hakim dapat tetap input ke sistem tanpa harus mengetahui password tersebut.

Atau cara kerja SQL injection berikutnya adalah dengan mengganti password menjadi kode SQL, yaitu password = ‘ OR 1=1’. Yang terjadi adalah pengguna “Hakim” tetap berhasil login ke sistem karena inputan password tersebut merupakan kodel SQL yang menandakan bahwa proses login berhasil.

Cara Mencegah SQL Injection

Seperti yang telah dijelaskan diatas bahwa tindakan SQL injection ini merupakan tindakan berbahaya bagi keamanan sistem database yang sudah dibangun. Oleh karena itu, perlu adanya tindakan pencegahan (prevent) yang harus dilakukan. Ada beberapa cara yang bisa Anda lakukan mencegah terjadinya SQL injection, berikut penjelasannya.

Cara Mencegah SQL Injection

1. Menggunakan Parameterized Query

Menggunakan parameterized query atau prepared statement merupakan cara yang lebih sederhana dan mudah dilakukan. Parameterized akan mendefinisikan seluruh kode SQL sebelum mengirimkannya ke lapisan query.

Database akan mampu mengenali mana input yang dimasukkan oleh pengguna, apakah termasuk kategori kode SQL atau data pengguna. Dengan begitu, para attacker tidak bisa mengubah isi query, walaupun telah memasukkan kode SQL saat melakukan input.

2. Melakukan Validasi Input Pengguna

Selanjutnya, Anda dapat melakukan validasi input pengguna untuk mencegah terjadinya SQL injection. Yaitu Anda filter semua input yang dilakukan pengguna, seperti jenis, panjang, format dan sebagainya. Dengan begitu, hanya inputan yang lulus vaidasi yang diproses oleh database.

3. Memberikan Batasan Hak Akses

Memberikan batasan hak akses untuk membatasi kerusakan yang terjadi akibat SQL injection. Jangan sesekali Anda login ke database menggunakan akses admin sebagai root. Namun, Anda dapat menggunakan akses istimewa yang telah ditentukan untuk membatasi ruang lingkup sistem.

4. Menyembunyikan Pesan Error

Biasanya, terdapat pesan error yang muncul dari database ketika pegguna melakukan inputan yang salah. Untuk menghindari terjadinya SQL injection ini, Anda diminta untuk menyembunyikan atau bahkan mematikan pesan error agar pengguna tidak terus mempelaari arsitektur database yang digunakan.

Sebab, bisa saja pengguna tersebut merupakan penyerang sistem Anda. Jika ingin menampilkan pesan, maka tampilkan pesan yang menyatakan bahwa sebaiknya pengguna menghubungi dukungan teknis untuk mengatasi masalah tersebut.

5. Memberikan Enkripsi Database

Anda dapat menyimpan data yang bersifat credential secara terpisah untuk menyulitkan penyerang dalam melakukan SQL injection, bahkan Anda dapat memberikan enkripsi untuk lebih mengamankan data tersebut.

6. Mengunci Database

Sebaiknya, SQL query tidak dapat diakses melalui halaman pengguna (website). Anda dapat memberikan batasan bahwa tidak semua pengguna dapat melakukan akses ke suatu tabel tertentu, yaitu dengan mengunci tabel yang sangat vital.

Itulah beberapa cara pencegahan yang bisa Anda lakukan agar terhindar dari serangan SQL injection. Selain itu, pastikan juga bahwa website yang Anda bangun telah lulus SQL injection vulnerability test. Semoga artikel diatas bermanfaat bagi Anda dan dapat membantu Anda untuk lebih menjaga privasi pengguna yang mengunjungi website Anda.

Leave a Reply

Send this to a friend