Sabtu, 05 Oktober 2013

Proteksi Dari SQL Injection


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.


Tidak ada komentar:

Posting Komentar

Moga Saya Bisa memberi Solusi Yang Bermanfaat

By.Admin