7.}else{8. echo "Login failed.";9.}Variabel form_user dan form_pwd berasal dari form HTML dasar yang saya buatsebelumnya. Dengan begini saya sudah bisa login dengan mengisi
admin
pada kolomuser dan
123
pada kolom password. Saat saya isi dengan data login yang ada, makavariabel $query akan menghasilkan:SELECT * FROM user_data WHERE user=’admin’ AND pwd=’123′Dan login pun berhasil, query akan menghasilkan nilai true karena semua statement bisadikerjakan (karena datanya sesuai dengan yang di database). Tapi kelemahan pada kodediatas bisa dimanfaatkan untuk menyisipkan query tambahan. Sebagai contoh, jika sayalogin dengan data ini:
Username
: test’ or ’saya’=’saya
Password
: test’ or ’saya=’sayaMaka variabel $query akan menghasilkan:SELECT * FROM user_data WHERE user=’test’ or ’saya’=’saya’ AND pwd=’test’ or ’saya=’saya’Query diatas juga akan menghasilkan nilai true, karena semua statement bisa dikerjakan,meskipun datanya tidak sama dengan yang didatabase. Kenapa bisa begitu? Coba lihaturutan prosesnya sebagai berikut:$form_user = test’ or ’saya’=’saya$form_pwd = test’ or ’saya=’sayauser = ‘$form_user’user = ‘
test’ or ’saya=’saya
‘ pwd = ‘$form_pwd’ pwd = ‘
test’ or ’saya=’saya
‘query = SELECT * FROM user_data WHERE user=’test’ or ’saya’=’saya’ AND pwd=’test’ or ’saya=’saya’Dengan begini, saya bisa masuk login kehalaman web tersebut tanpa harus tahu datalogin siapapun. Saya bahkan bisa menjalankan perintah lain seperti Update, Drop,Truncate, dsb. Karena tidak ada yang error pada query diatas, hanya saja eksekusinya berjalan dengan tidak seharusnya (tidak sesuai rule aplikasi yang dibuat). Simple thought, but it’s very dangerous
CSS injection
Nah, dari contoh SQL injection diatas, sebenarnya bisa kita aplikasikan ke tempat lain,yaitu CSS. Pernah browsing ke situs-situs yang punya form text dimana
Leave a Comment