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?

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 =            ‘bengkulucyberteam’ AND password = ’fakeroot'

############################

Akan tetapi, jika pengguna membuat username menjadi “Imron #” 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 “Imron” 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.

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.

sekian artikel saya mengenai sql injection dan cara pencegahan nya
lebih dan kurang nya terima kasih

#sqli #sqlinjection #bengkulucyberteam
Next Post Previous Post
No Comment
Add Comment
comment url