|
|
|
|
Online Now: 4 0 Members | 4 Guests |
|
|
|
|
|
|
Copy & paste Coding Dibawah ini Untuk Banner kami ================================== <a href="http://www.sekuritionline.net/" target="_blank"><img src= "http://www.sekuritionline.net/ banner/banner.gif" width="125" height="75" alt="sekuritionline.net" title="SO-Te@m" border="0" /></a> |
|
|
|
|
|
|
| -------------------------------- |
|
|
|
|
|
|
|
| January 26, 2009, 5:50 pm |
|
|
|
|
By external_system_error
Published: February 21, 2008
Print
Email
SQL Injection adalah salah satu jenis penyerangan yang mengijinkan user
tidak sah(penyerang)untuk mengakses database server. Pada
dasarnya,serangan ini difasilitasi oleh kode program anda sendiri.
teknik nya,penyerang mencoba memasukkan query (melalui field atau URL)
yang akan menyebabkan database server men-generate query SQL yang tidak
valid. Pada kenyataan nya,SQL injection terbukti merupakan salah satu teknik terbaik yang sering melumpuhkan sasarannya. Begitu penyerang berhasil menguasai kendali dataase server,ia bisa melakukan apa saja,seperti memodifikasi atau bahkan menghapus semua data yang ada. bagaimana pun juga , ini bisa dicegah jika kode program anda melakukan validasi yang baik. Sebenarnya apa bila anda teliti,teknik SQL injection sangat sederhana sekali. Akan tetapi justru yang sering diabaikan oleh para programer,entah itu tidak tahu atau lupa. Berikut ini beberapa contoh teknik SQL injection,implementasi,dan cara menggagalkan nya. Single SQL Injection walaupun penyerang awalnya mencoba memasukan query berupa pernyataan SQL,akan tetapi bukan sembarang query. Dalam hal ini,penyerang cukup memiliki pengatahuan mengenai SQL,sebagai contoh permulaan (maklumlah saya masih newbie ) anda memiliki kode seperti ini. $match = false; if (isset($_POST['submit'])) { $nama = $_POST['nama']; $pass = $_POST['pass']; $sql = "SELECT nama, password FROM user WHERE nama='$nama' AND password='$pass'"; $res = mysqli_query($db, $sql); // jika res berhasil,dan row yang // dikembalikan=1, set $match=true if ($res && mysqli_query_rows($res) == 1) { $match = true ; mysqli_free_result($res); } if ($match === true) { echo 'account match'; } else { echo 'invalid account'; } } kode program diatas memang kelihatan melakukan verifikasi data, tetapi sebenarnya sangat rapuh,penyerang bisa menggnakan query-query seperti dibawah ini,untuk melakukan akses secara tidak sah // mengisi field nama saja,# adalah komentar, // yang akan mengabaikan baris setelahnya admin'# // mengisi nama field saja // mengekstrak data kelokasi tertentu 'OR' 1=1 INTO DUMPFILE '/path/ke_lokasi/file.txt '# 'OR' 1=1 INTO OUTFILE '/path/ke_lokasi/file.txt '# Bagaimapun juga,contoh contoh SQL injection diatas adalah contoh yang umum. Adapun untuk mencegah nya menggunakan fungsi mysql_real_escape_string () atau addslashes(), seperti yang diuraikan pada fungsi myMacig()sebelumnya $nama = myMacig($_POST['nama']}; $pass = myMacig($_POST['pass']}; Multiple SQL injection Contoh SQL injection lainnya adalah dengan memberikan multiple query,seperti berikut: // $id dari method GET/POST $sql = "SELECT * FROM buku WHERE kode='{$id}’ “; //mengahapus isi table 0; DELETE FROM user // membuat account baru 0; GRANT ALL ON *.* TO 'xxx@%' Dalam kasus ini,macig quote akan mengabaikan tanda titik koma,ini sangat membahayakan jika menggunakan SQLite atau postgreSQL. Adapun solusi nya adalah menggunakan operator casting untuk memastikan bahwa id harus integer. //Simulasi nilai $_POST['id'] 0; DELETE FROM user $id = (int) myMacig($_POST['id']); apabila anda ingin memeriksa apakah input mengandung karakter tertentu,gunakan fungsi strpos(). $nama = myMacig ($_POST ['id']); // periksa apakah karakter ; terdapat // di variabel $nama. if (strpos($nama, ';' die ('Naughty Naughty, Very Naughty...' ;
Thank you to the GOD who had not given me the bad characteristics, the
friend of my close friend and notebook Aspire 5315-200508Mi that always
accompanied me in studying By ExTeRNaL_SySTeM_ErRoR.@ka.adhie
View Comments (2)
|
|
|
|
|
mas, kekna kenal neh artikel sapa, tolong admin di koreksi, lebih baik kasih referensinya
sirik ajah si om mailer^kolong biarin ajah lagian yg blm tau kan jadi tau.