============================ --> Pengertian SQL Injection Beserta Cara Kerja dan Cara Mecenggah -->

Pengertian SQL Injection Beserta Cara Kerja dan Cara Mecenggah

 

Seperti Kalian  ketahui bahwa teknologi semakin maju 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/internet 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 satunya teknik hacking yang paling umum dilakukan oleh para hacker muda dalam melakukan serangan adalah SQL injection.

Nah, pada kesempatan kali ini saya akan menjelaskan mengenai pengertian dari SQL injection, cara kerjanya dan beserta cara mencegah terjadinya 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?



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 = ‘Dani’ AND password = ’Sadi12                                     

Akan tetapi, jika pengguna membuat username menjadi “Joko#” maka karakter ‘#’ akan menyebabkan karakter selanjutnya tidak dianggap sebagai kode SQL. Akibatnya, maka username Joko 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 “Joko” tetap berhasil login ke sistem karena inputan password tersebut merupakan kodel SQL yang menandakan bahwa proses login berhasil.


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.


Nah,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.


Sekian dari saya terima kasih.



You may like these posts