CARA SEDERHANA UNTUK INJECTION
MECEGAH SQL
Lina yuliana
[email protected]
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 Contoh:
cara
menjadikan
variabel
get
menjadi
absolute
integer
1 http://situskorban.com/berita.php?id=1 ketika akan membaca isi dari variabel id biasanya kita menggunakan syntak
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
1 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 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 2. 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
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
1
http://situskorban.com/berita.php?id=1&token=jk340i34a3fdvaj4333j3n43jj42l30aby 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 Judul Berita 7 8 ?> Sekarang pada halaman tampil berita kita tambahkan pengecekan apakah id berita diganti/diinject manual oleh user dengan cara : 01
//masukkan syntak untuk menampilkan berita disini
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
08 } 09 else{ 10
echo "SQL Injection detected..!!!!";
11 } 12 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
$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";
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
10 } 11 else{ 12
echo "Login Gagal";
13 } 14 15 ?> Autentikasi login seperti diatas sangat rentan terhadap penetrasi SQL Injection.. solusi pertama dengan melakukan enkripsi pada password yaitu dengan mengganti skrip berikut : 1 Solusi kedua yaitu dengan merubah algoritma menjadi: 1 $d=mysql_fetch_array($r); 2 if($jml_row >0 && ($d[password]==$password)) Dilihat dari script diatas bahwa Anda dapat menambah pengecekan inputan password database. 01
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
03 $username = $_POST[username]; 04 $password = md5($_POST[password]); 05 06
$r=mysql_query("SELECT * FROM tbl_user WHERE username='$username' and password='$password'");
07 08 $jml_row = mysql_num_rows($r); 09 $d=mysql_fetch_array($r); 10 11 if($jml_row >0 && ($d[password]==$password)){ 12
echo "Login Sukses";
13 } 14 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. Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org
Referensi http://www.afrioni.web.id/2012/11/teknik-mencegah-sql-injection-pada-php.html
Biografi Lina Yuliana. jurusan Sistem Informasi dengan konsentrasi Akuntansi Komputer. Hobi Main Bulu tangkis.
Lisensi Dokumen: Copyright © 2008-2014 ilmuti.org Seluruh dokumen di ilmuti.org dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari ilmuti.org