PHP Security: Menangani MySQL Injection pada PHP

By Adhi P. - Last updated: Tuesday, November 22, 2011 - Save & Share - Comments

banner438kursus PHP Security: Menangani MySQL Injection pada PHP

Kalau kamu sudah menggunakan database MySQL misalnya untuk login member, maka kemungkinan besar web kamu bisa dimasukkin oleh orang yang tidak berhak menggunakan sebuah teknik hack yang dikenal dengan MySQL Injection. PHP menyediakan sebuah fungsi yang menarik untuk mengatasinya. Mari kita lihat…

Sebelum kita belajar menggunakan fungsi PHP tersebut, ada baiknya saya coba sedikit ceritakan tentang MySQL Injection terlebih dahulu.

 

Pada dasarnya, MySQL Injection adalah sebuah cara memanipulasi query yang kita kirimkan ke tabel database MySQL kita sehingga query yang kita kirimkan diartikan lain oleh script PHP dan database MySQL kita.

 

Manipulasi ini bisa dilakukan untuk sekedar login secara ilegal, atau lebih parah lagi bisa digunakan untuk mendelete isi tabel yang kita miliki. Bahaya kan? Secara sederhana, caranya bisa saya gambarkan seperti ini.

 

Misalnya aja kamu memiliki query form login user sederhana menggunakan PHP dengan kode seperti ini:


<?

$nama = "bambang";

$query = "SELECT * FROM pelanggan WHERE user = '$nama'";

echo "Normal: " . $query . "";

 

// user input yang menggunakan MySQL Injection

$nama_manipulasi = "' OR 1'";

 

// Query untuk perbandingan

$query_manipulasi = "SELECT * FROM pelanggan WHERE user = '$nama_manipulasi'";

 

// tampilan query dengan injection

echo "Injection: " . $query_manipulasi;

?>

Tampilan hasil eksekusi adalah seperti ini:

 

Normal: SELECT * FROM pelanggan WHERE user = ‘bambang’

Injection: SELECT * FROM pelanggan WHERE user = ” OR 1”

 

Tampilan query pertama normal-normal aja, database akan memilih pelanggan yang bernama bambang.

 

Namun demikian, MySQL Injection telah membuat query kita melakukan hal yang berbeda. Hanya dengan menambahkan tanda kutip tunggal, si pemanipulasi telah mengakhiri string query kita dengan sukses sehingga menjadi seperti ini:

 

$user = ”

 

dan kemudian menambahkan OR 1 ke dalam statemen WHERE kita yang membuat artinya menjadi SELALU BENAR. Perhatikan hasil akhir query kita setelah di inject:

 

$user = ” OR 1

 

SELALU BENAR!

 

Try This: 4 Langkah Mudah Belajar Cara Membuat Website, Langsung Praktek! KLIK DI SINI!.

Jika script PHP kita sebelumnya hanya mengijinkan pelanggan yang ada dalam tabel MySQL saja yang masuk (dalam kasus ini yang bernama bambang), maka dengan trik ini, kita tidak memerlukan nama pelanggan untuk bisa masuk ke dalam login member. Karena dengan klausul OR 1, hasil query kita selalu benar.

 

Ok deh, dalam tulisan selanjutnya kita akan bahas cara menanganinya.

 

About the author

 PHP Security: Menangani MySQL Injection pada PHP Adhi Prasetio mulai menggeluti pembuatan website sejak tahun 2001. Di samping kesibukannya sebagai pengajar dan pembicara dengan topik e-commerce, penulis juga telah bertahun-tahun aktif menulis di internet. Sebagian besar tulisannya ditujukan untuk berbagi pengalaman dan membantu para pemula dalam mempelajari cara membuat website dan internet marketing. Penulis yang juga dikenal sebagai Prothelord, merupakan pengelola sekaligus kontributor utama websitehttp://prothelon.com yang merupakan salah satu website populer untuk belajar membuat website. Buku yang sudah diterbitkan antara lain Cara Mudah Membuat Desain web untuk Pemula, Tip & Trik Menjadi Master PHP, Buku Pintar Pemrograman Web dan Smart Guide Jualan Online. Anda bisa melihat profilnya di Google+

Posted in Belajar PHP Lanjutan • Tags: , , , Top Of Page