ZURIAN AFFANDI
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.
Tujuan dan Manfaat
Tahapan SQL Injection:
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'='a | tes') 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)