Teknik Scripting mencegah SQL Injection

Serangan SQL injection seakan tidak ada matinya. Tiap hari selalu
saja ada situs yang terkena serangan ini. Semoga aja para hacker
yang melakukan injection ini pada taubat semua yah.

SQL injection merupakan teknik yang dilakukan para hacker untuk masuk
ke sebuah sistem atau situs dengan memberikan perintah atau query SQL
melalui metode GET atau POST memanfaatkan kelemahan sistem. Kelemahan
sistem di sini bisa berasal dari script atau programnya sendiri atau
dari dalam server.

Pada kesempatan ini saya akan coba bahas bagaimana teknik scripting
untuk mencegah SQL injection melalui GET method.

Biasanya, serangan SQL injection yang dilancarkan ke sebuah situs
korban melalui URL berparameter, misalkan seperti ini:

http://situskorban/artikel.php?id=10

URL di atas memiliki parameter id dan biasanya diikuti dengan angka
tertentu. Angka ini menunjukkan nomor id dari artikel yang sedang
tampil.

Hanya dengan menambahkan beberapa query SQL di belakang parameter
tersebut, seorang hacker mampu mengakses database yang digunakan oleh
situs tersebut. Berikut ini salah satu contoh query yang diinjectkan
melalui URL berparameter

http://situskorban/artikel.php?id=10 union all select 1,concat(user,0x3a,pass,0x3a,email) from users --

Seorang hacker dalam melancarkan aksinya, biasanya butuh beberapa
kali submit URL dan query sebelum akhirnya mendapatkan targetnya.

Nah… sekarang saya akan paparkan sedikit tentang bagaimana
menghindari injection seperti halnya di atas. Point pentingnya di sini
adalah bagaimana supaya parameter hanya bisa membaca nomor unik id dari
artikelnya saja, dengan mengabaikan query yang disisipkan hacker. Atau
dengan kata lain bagaimana supaya parameter yang berisi query injection
dihilangkan, misal apabila diberikan URL berikut ini

http://situskorban/artikel.php?id=10 union all select 1,concat(user,0x3a,pass,0x3a,email) from users --

akan menjadi

http://situskorban/artikel.php?id=10

(bagian ‘union all select 1,concat(user,0x3a,pass,0x3a,email) from
users –’ diabaikan)

OK… untuk menghilangkan query yang disisipkan pada parameter dalam
URL, kita bisa menggunakan ‘teknik casting’. Dalam hal ini, kita
mengcasting nilai parameter ke dalam tipe data integer. Sebagai contoh,
misalkan kita memiliki sebuah string id = ’10 union all select
1,concat(user,0x3a,pass,0x3a,email) from users –’. Apabila id ini
dicasting ke dalam integer maka akan dihasilkan id = 10, dengan cara
memberikan perintah id = (int) $id.

<?php   $id = "10 union all select 1,concat(user,0x3a,pass,0x3a,email) from users --"; $id = (int) $id; echo $id;   ?>

Script di atas akan menghasilkan 10.

Nah… pada URL http://situskorban/artikel.php?id=…, biasanya dalam
script artikel.php ini, pastilah di dalamnya terdapat perintah berikut

<?php   $id = $_GET['id'];   /* script untuk menampilkan artikel dengan id tertentu*/   ?>

Perintah $id = $_GET[‘id’]; digunakan untuk membaca nilai parameter
id-nya untuk kemudian ditampilkan artikelnya berdasarkan id tersebut.
Nah.. teknik casting di atas dapat diterapkan pada script artikel.php
ini

<?php   $id = (int) $_GET['id'];   /* script untuk menampilkan artikel dengan id tertentu*/   ?>

Lebih baik lagi, kalau kita tambahkan function absolut abs()

<?php   $id = abs((int) $_GET['id']);   /* script untuk menampilkan artikel dengan id tertentu*/   ?>

Mengapa perlu ditambahkan abs()? ya… karena ada pula teknik SQL
injection yang memanfaatkan ‘negative number’ pada parameter URLnya,
misalkan

http://situskorban/artikel.php?id=-10 union all select 1,concat(user,0x3a,pass,0x3a,email) from users --

Di sini, function abs() hanya untuk menjamin saja bahwa nilai
parameter id adalah bernilai positif.

Oya… Teknik di atas dapat juga diterapkan pada POST method melalui
form.

OK… demikian tipsnya. Mudah-mudahan ada manfaatnya buat Anda. Oya…
disamping teknik pencegahan dapat dilakukan dari sisi scripting seperti
yang telah saya paparkan di atas, terdapat pula teknik pencegahan dari
sisi server yang justru lebih disarankan. Salah satunya adalah dengan
memberikan pengamanan web
server (Apache) dengan mod_security.

Terus kalau gagal gak tanggung jawab ah, karena saya dapat info nya dari sini blog.rosihanari.net , tapi kalo berhasil saya ngucapin terima kasih kalo gitu mah. udahan dulu ah, see you next time in other posting , “so kebulean”

VN:F [1.9.3_1094]

One thought on “Teknik Scripting mencegah SQL Injection

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s