Beranda Hacker Pengertian SQL Injection dan Cara menghindarinya

Pengertian SQL Injection dan Cara menghindarinya

0

Apa itu SQL Injection?

Sql injection adalah sebuah teknik hacking yang dilakukan dengan menyisipkan baris kode SQL pada kotak isian (misalnya form login) atau pada url yang mana serangan ini akan mempengaruhi logika dari website tersebut.

Sql injection memanfaatkan celah keamanan yang disebabkan karena masukan pengguna tidak disaring secara benar oleh aplikasi.

Bingung?
Mari kita bahas bagaimana website bekerja terlebih dahulu.

Bagaimana website bekerja?

Aplikasi web pasti menggunakan database untuk menyimpan semua data seperti komentar, artikel, termasuk data login, semuanya disimpan di dalam database. Rata-rata database untuk website menggunkan bahasa SQL.

Jadi sekurang kurangnya pasti ada :
Halaman website > backend server > database.

Install aplikasi Kamus IT di Playstore jika kamu kesulitan dengan istilah-istilah yang sedang kita gunakan.

Saat user sedang login, user tersebut harus mengisi username dan password pada sebuah formulir isian bukan?
Pada saat itu username dan password dikirimkan ke server, lalu server mengecek kesesuaian data.

Apakah username tersebut ada di dalam database? (kalau ada maka akan mengembalikan nilai Variable1 = “True”, kalau tidak ada maka Variable1 = “False”),
DAN Apakah passwordnya sesuai dengan apa yang dipasangkan dengan username? (kalau sesuai maka akan mengembalikan nilai Variable2 = “True”, kalau tidak sesuai maka Variable2 = “False”).

Nah pada website yang tingkat keamanannya rendah biasa dilakukan verifikasi langsung seperti ini:

“Jika nilai yang masuk pada formulir isian menghasilkan True maka user dapat login.”

Kita tentu saja berharap nilai True yang didapat adalah hasil dari Variable1 dan Variable2.

Namun bagaimana jika seseorang dapat memasukkan nilai True bahkan tanpa harus menyesuaikan username dan passwordnya di database?

Inilah Salah Satu Teknik SQL Injection.

Artikel ini tidak bertujuan untuk mengajarkan hal-hal yang buruk, melainkan hanya sebagai pembelajaran saja. Memperhitungkan rata-rata website sudah tidak lagi mengalami celah keamanan ini (SQLI yang akan dibahas selanjutnya).
Karena mustahil untuk mengajarkan cara menangani sql injection tanpa memberikan sedikit contoh.

Seperti apa sih bahasa SQL itu?

Misalnya, kita dapat melakukan perintah sql seperti dibawah ini

select * from account
(pilih semua dari table account)

Akan membuat response seperti ini:

perintah sql

Menampilkan sebuah table yang yang di isi data baris per baris. (gambar diatas tidak berkaitan dengan contoh gambar yang selanjutnya)

Lalu biasanya Logika yang digunakan untuk proses login pada website yang keamanannya rendah adalah seperi ini:

Select * from accounts where username =’$USERNAME’ and password=’$PASSWORD’

(pilih semua dari table account yangmana usernamenya adalah ” $USERNAMEdan passwordnya sama dengan ” $PASSWORD “). kalau usernamenya ada (True) dan passwordnya sesuai (True) maka user blablabla di ijinkan masuk.

Perlu diperhatikan penggunaan gerbang digital,
Gerbang digital AND adalah jika suatu nilai ada yang memiliki nilai False, maka hasilnya akan False, jadi semua nilai harus True untuk mendapatkan hasil True.
True and False = False
False and True = False
True and True = True

Gerbang digital OR adalah jika ada satu nilai saja yang True, maka hasilnya akan True.
True or False = True
False or False = False
True or True = True

Contoh SQL Injection

Pada pengujian dibawah ini kita anggap usernamenya adalah admin dan passwordnya adalah meretasdotcom sedangkan Logika login yang digunakan di asumsikan sama seperti diatas. maka seperti ini yang akan terjadi.

cara kerja sql pada login

Seperti yang diharapkan, user admin dapat masuk karena passwordnya benar.

Dapat dimengerti bahwa pada inputan username dan password akan mengisi logika yang dijalankan website di belakang layar yang mana menggunakan bahasa SQL.
(apapun yang dimasukkan didalam form input akan mengisi username dan password pada Select * from blablabla…)

Tapi bagaimana jika seseorang mengisikan nya seperti ini ?

sql injection bypass login example

User admin dapat login tanpa menggunakan password yang seharusnya.

Perhatikan lagi pada gerbang logika “or” apabila ada salah satu yang bernilai True maka hasilnya True.
Penggunaan tanda petik sangat penting dan perlu ketelitian, lalu tanda pagar dalam bahasa SQL merupakan tanda komentar, jadi setelah tanda pagar kode apapun akan di abaikan.

Bahaya Serangan SQLI

Apa saja kerugian yang bisa disebabkan oleh SQL Injection?
1. Kemungkinan penyerang dapat mengakses database. dapat mengakes database artinya dapat melihat data-data sensitif,
2. Dapat login menggunkan hak akses admin,
3. Dapat mengupload file kedalam website kita.

Bagaimana cara mengatasi SQL Injection?

Dalam hal ini saya memposisikan pembaca sebagai developer, pembuat website itu sendiri.

  • Lakukan validasi pada setiap formulir isian, misalnya sebelum melakukan logika pengijinan login pastikan data yang masuk di jadikan string value terlebih dahulu. Hindari logika yang terjadi pada contoh diatas.
  • Pisahkan data dari dari pengkodean SQL.
  • Ada banyak lagi teknik teknik sql injection selain baypass login, salah satunya dengan memanfaatkan informasi atas jumlah baris dari table database. maka hindari menampilkan id angka (biasanya auto increment), gunakanlah slug sebagai gantinya.
  • Website yang rentan terhadap SQL Injection biasanya adalah website yang dibangun sendiri tanpa bantuan framework seperti website sekolah (dulu), yang mana developer aplikasinya memikirkan sendiri logika logika yang beresiko cacat logika. Padahal framework2 website sekarang sudah berpedoman pada keamanan.

Baca juga artikel menarik lainnya : Pengertian Deep Web, Tidak semengerikan itu.

LEAVE A REPLY

Please enter your comment!
Please enter your name here