Selasa, 06 Oktober 2009

Proteksi Dari SQL injection

Proteksi Dari SQL injection

Saya yakin Anda sudah banyak tahu tentang teknik SQL Injection dan sejenisnya. Tapi sebagian dari Anda mungkin masih bertanya-tanya bagaimana cara mengamankan program kita dari teknik SQL Injection ini ?

Sebenarnya banyak cara untuk menangkal teknik ini. Banyak programmer yang sudah membuat rekomendasi bagaimana menangkalnya. Bahkan para hacker juga telah melakukannya. Tinggal kita hendak memilih yang mana. Oh iya, jangan mengira bahwa teknik SQL Injection hanya terbatas pada form login. Sebenarnya teknik tersebut sangatlah luas. Tapi saya tidak akan membahas hal tersebut sekarang. Yang akan saya bahas adalah beberapa teknik untuk mengamankan SQL Injection. Oke, kita mulai !!

Secara umum ada 2 cara untuk menangani SQL Injection. Cara yang pertama adalah “memblokir karakter yang tidak lazim”. Berikut adalah contoh scriptnya :

$check1 = strstr($username,”\’”);
$check2 = strstr($password,”\’”);
if (($check1) or ($check2))
{
echo “Gagal masuk”;
}
else
{
echo “Berhasil masuk”;
}

Saya akan jelaskan script di atas. Mula-mula username dan password di-cek apakah terdapat karakter petik (‘). Jika terdapat karakter petik maka akan muncul pesan “Gagal masuk”. Jika tidak ditemukan karakter petik (‘) maka akan muncul pesan “Berhasil masuk”. Lalu ?? Bagaimana dengan teknik di atas ?. Permasalahannya adalah ada banyak karakter lain yang perlu di-blok selain karakter petik, misalnya karakter $, %, !, *, dan ratusan karakter lainnya. Semuanya harus di-blok satu-persatu. Agak repot bukan ?

Cara kedua untuk menangkal SQL Injection adalah “hanya mengizinkan karakter tertentu”. Ini adalah cara yang paling saya sukai dan direkomendasikan oleh para hacker. Berikut adalah contoh scriptnya :

if ((preg_match(”/^[a-zA-Z0-9 _]/”, $username))
and (preg_match(”/^[a-zA-Z0-9 _]/”, $password)))
{
echo “Berhasil masuk”;
}
else
{
echo “Gagal masuk”;
}

Script di atas saya dapatkan dari seorang hacker. Jadi berterimakasihlah kepada para hacker tersebut =). Saya akan jelaskan sedikit script tersebut. Username dan password akan di-cek apakah sesuai dengan format a-z, A-Z, 0-9, spasi ( ), dan underscore (_). Jika format sesuai maka muncul tulisan “Berhasil masuk”. Tetapi jika ada karakter di luar format tersebut maka akan muncul tulisan “Gagal masuk”.

Sebenarnya masih ada cara yang lain untuk menangani SQL Injection, seperti script berikut ini :

$username = htmlspecialchars($username);
$username = addslashes($username);

Beberapa programmer merekomendasikan script tersebut, tapi terus terang saya tidak begitu menyukainya. Sepertinya kurang efektif. Bagaimanapun, semuanya kembali kepada Anda, mau pilih yang mana silahkan.

Sekian …..

Sumber : Bang Leo

Link : Http://boleh-hacking.com

Load disqus comments

0 komentar