CARA SEDERHANA UNTUK INJECTION MECEGAH SQL Lina yuliana mdamoners@gmail.com Abstrak Teknik serangan SQL Injection merupakan serangan injeksi perintah SQL pada bagian URL atau bagian Body HTTP Request. Pada bagian URL, bisa kita lakukan langsung dengan memodifikasi kotak URL di browser. Sedangkan untuk injeksi di bagian body, ini biasa dilakukan ketika kita mengisi form. Seperti form login, form pencarian, form pendaftaran, atau form-form lainnya. Kata Kunci: SQL, Injection Pendahuluan Artikel ini akan memberikan informasi bagi pembaca yang kesulitan dengan Teknik Mencegah SQL Injection pada PHP. Pembahasan SQL Injection ini adalah salah satu teknik para hacker untuk membobol sebuah sistem pada sebuah situs dengan mengirimkan perintah query SQL dengan menggunakan metode GET atau POST yang memanfaatkan kelemahan sistem. Kelemahan sistem di sini bisa berasal dari script atau programnya sendiri atau dari dalam server.oke, kita langsung saja: 1. Dengan cara menjadikan variabel get menjadi absolute integer Contoh: 1 http://situskorban.com/berita.php?id=1 ketika akan membaca isi dari variabel id biasanya kita menggunakan syntak
1 <?php 3 $id = $_GET['id']; 5?> jadi setiap isi dari id pada url akan disimpan pada variable $id Dan berikut adalah query yang menghubungkan ke database 1 "SELECT * FROM tbl_berita WHERE id='$id'" Solusinya adalah kita buat id menjadi absolute integer dengan mengubah sintaks pembacaan variabel get id menjadi: 1 <?php 3 $id = abs((int)$_get['id']); 5?> Mengapa ditambah abs()? karena abs() digunakan untuk menghilangkan tipe data minus dan int digunakan untuk mengubah tipe data menjadi integer (hanya mengijinkan tipe data integer. Dengan menambahkan variabel get berisi enkripsi md5 yg divariasi pada url Maka kita perlu menambahkan variabel yg berisi enkripsi md5 dari id yg kita modifikasi dengan string acak menjadi
1 http://situskorban.com/berita.php?id=1&token=jk30i3a3fdvaj333j3n3jjl30aby k9 Maksud dari variabel token diatas ketika awal kita memberikan link untuk menampilkan berita lain, maka id dari berita tersebut kita enkripsi seperti berikut ini 1 <?php 3 $token = md5(md5($id_berita).md5('kata acak')); 5 //url beritanya 6 <a href="berita.php?id=$id_berita&token=$token">judul Berita</a> 7 8?> Sekarang pada halaman tampil berita kita tambahkan pengecekan apakah id berita diganti/diinject manual oleh user dengan cara : 01 <?php 0 03 $id_berita=$_get['id_berita']; 0 $token=$_get['token']; 05 $cek=md5(md5($id_berita).md5('kata acak')); 06 if($token==$cek){ 07 //masukkan syntak untuk menampilkan berita disini
08 } 09 else{ 10 echo "SQL Injection detected..!!!!"; 11 } 1 13?> 3. Untuk form login, dengan melakukan enkripsi password atau merubah algoritma autentikasi login. Mungkin sobat semua udah pada tahu pada point yang ke-3 ini yaitu menggunakan md5 untuk autentikasi pengecekan pada saat user login. Biasanya pada form login melakukan pengecekan ketika user login yaitu dengan melakukan query ke database secara langsung. Contohnya sebagai berikut: 01 <?php 0 03 $username = $_POST[username]; 0 $password = $_POST[password]; 05 06 $r=mysql_query("select * FROM tbl_user WHERE username='$username' and password='$password'"); 07 $jml_row=mysql_num_rows($r); 08 if($jml_row > 0){ 09 echo "Login Sukses";
10 } 11 else{ 1 echo "Login Gagal"; 13 } 1 15?> Autentikasi login seperti diatas sangat rentan terhadap penetrasi SQL Injection.. solusi pertama dengan melakukan enkripsi pada password yaitu dengan mengganti skrip berikut : 1 <?php 3 $password=md5($_post[password]); 5?> Solusi kedua yaitu dengan merubah algoritma menjadi: 1 $d=mysql_fetch_array($r); if($jml_row >0 && ($d[password]==$password)) Dilihat dari script diatas bahwa Anda dapat menambah pengecekan inputan password database. 01 <?php 0
03 $username = $_POST[username]; 0 $password = md5($_post[password]); 05 06 07 $r=mysql_query("select * FROM tbl_user WHERE username='$username' and password='$password'"); 08 $jml_row = mysql_num_rows($r); 09 $d=mysql_fetch_array($r); 10 11 if($jml_row >0 && ($d[password]==$password)){ 1 echo "Login Sukses"; 13 } 1 else{ 15 echo "Login Gagal"; 16 } 17 18?> Penutup demikian tips yang dapat saya sampaikan pada posting kali ini dengan judul Cara Mencegah SQL Injection.Mungkin dapat Anda terapkan dalam sistem yang Anda bangun dan semoga bermanfaat bagi kita semua.
Referensi http://www.afrioni.web.id/01/11/teknik-mencegah-sql-injection-pada-php.html Biografi Lina Yuliana. jurusan Sistem Informasi dengan konsentrasi Akuntansi Komputer. Hobi Main Bulu tangkis.