SQL Injection Form Login dan Pencegahannya

ZURIAN AFFANDI

Sosial Media


0 orang menyukai ini
Suka

Summary

SQL Injection merupakan teknik eksploitasi dengan cara memodifikasi perintah SQL pada form input aplikasi yang memungkinkan penyerang untuk dapat mengirimkan sintaks ke database. Metode yang digunakan untuk melakukan serangan melalui SQL Injection salah satunya melalui form login. Attacker memanfaatkan celah form login untuk memasuki sistem dan akan menaikan level dari seorang admin menjadi seorang owner. 

Description

Tujuan dan Manfaat

  1. Mendeteksi kelemahan dan kerentanan form login.
  2. Memperbaiki kelemahan yang ditemukan.
  3. Memenuhi persyaratan keamanan.
  4. Mengurangi resiko dari serangan attacker.

Tahapan SQL Injection:

  1. Menemukan celah keamanan melalui data pengguna. Langkah pertama yang dilakukan pada proses SQL injection adalah melihat celah keamanan dengan mendapatkan data pengguna melalui proses login saat akan mengakses situs tertentu. Terutama saat pengguna menuliskan nama user beserta kata sandi. Selanjutnya mereka akan mengirimkan kode pada halaman login dengan query SQL dan diproses oleh database sebagai sebuah perintah. Pada bagian username umumnya diisi dengan menggunakan karakter. 
  2. Proses validasi. Selanjutnya database melakukan validasi atas perintah yang dikirimkan. Dengan demikian, database akan memberikan informasi pengguna yang digunakan pada proses login. Selanjutnya, hacker akan diizinkan untuk masuk pada akun tersebut. 
  3. Mendapatkan akses database. Langkah selanjutnya, attacker dapat melakukan segala aktivitas pada akun terkait. Mulai dari mengubah pengaturan di dalamnya termasuk menjadikan attacker sebagai administrator. Attacker bisa dengan mudah mengakses, mengubah, hingga menghapus data.

SQL Injection Form Login

Attacker masuk tanpa username dan password yang benar. Setelah attacker membypass form login yang dibuat programmer, resiko yang dihadapi oleh programer saat itu adalah tergantung dengan motif attacker. Attacker bisa saja mengubah berita ataupun mencuri data-data yang penting. 

Resiko yang paling tinggi adalah attacker mengupload shell untuk dijadikan backdoor dan menjadi langkah awal untuk men-takeover sistem yang telah didapatkan. Form login berikut adalah perintah yang sering digunakan attacker untuk membypass form login:

admin’--" or "1"="1") or ("a"="a
" or 1=1--' or 1=1--tes " or "a"="a
or 0=0#' or = 0=0#tes' or 'a'='a
" or 0=0#or 1=1--tes") or ("a"="a
' or '0'='0') or ('a'='ates') or ('a'='a

 Seraca umum seseorang berhasil login jika memasukkan username dan password sesuai dengan yang ada pada database. Berikut adalah contoh username dan password yang ada pada database yang digunakan pada form login.

Namun attacker yang hendak masuk sebagai admin tidak mengetahui username dan password, sehingga harus mencari cara lain untuk bisa masuk melalui form login.

Dengan username admin dan password 1234 maka 

Berikut adalah nilai yang sering digunakan attacker untuk membypass form login:

Perintah username admin’-- dan password sdsfsdg dan berhasil login.

Perintah username ' or 1=1-- dan password dsfs dan berhasil login.

Berikut contoh code form login yang mudah diserang attacker:

 

Mencegah Serangan SQL Injection Form Login

Untuk mencegah SQL Injection, kita harus mengamankan value yang dikirim field melalui form. Jangan pernah menggunakan parameter dari URL atau form tanpa melakukan validasi.

Berikut ini adalah contoh pengkodean yang buruk:

Sekarang bagaimana cara membut kode diatas menjadi aman. Ada beberapa cara yang sering digunakan untuk mengamankan form login, yaitu:

Menggunakan mysqli_real_escape_string()

Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contoh scriptnya:

Fungsi mysql_real_escape_string digunakan untuk mem-bypass karakter spesial dalam query SQL, sehingga jika attacker mnyertakan karakter seperti ' ! ^ ] " dan lain sebagainya, maka fungsi ini tidak akan membaca karakter tersebut.

Menggunakan addslashes()

Penggunaannya bisa digabungkan dengan fungsi trim(). Berikut ini adalah contoh scriptnya:

Encript Password

Hal lain yang perlu diperhatikan yaitu mengenskript password sebelum disimpan kedalam database. Anda dapat menggunakan MD5  atau fungsi enscript lainnya. Contoh scriptnya:

Menggunakan mysqli_stmt_bind_param()

Perintah lain yang bisa digunakan adalah 

Berikut contoh code form login yang sulit diserang attacker:

 

Referensi:

https://educhannel.id/artikel/keamanan-aplikasi-berbasis-web/mencegah-serangan-sql-injection-dari-form-login.html (di akses pada tanggal 25 Juli 2024, 13:30 WIB)

https://dqlab.id/kenali-bahaya-sql-injection-demi-keamanan-data (di akses pada tanggal 25 Juli 2024, 13:32 WIB)

Informasi Course Terkait
  Kategori: Cyber Security
  Course: Master Class On Job Training : Fullstack Programming & Cyber Security