Mengamankan Aplikasi dari Serangan SQL Injection

Buat: 01/24/2014 - 13:04
Mengamankan Aplikasi dari Serangan SQL Injection

Salah satu penyakit yang tidak di hiraukan oleh programmer ketika membuat login page adalah SQL Injection. Saya juga pertama tidak menyadari serangan model SQL Injection. Namun saya punya satu cara yang bisa mengatasi masalah ini. Pertama silakan dengan kalimat satu ini dulu: a3201f1018bae15ef59f7883191c411a.

Ini belajar dari cara cryptografi Mossad, badan inteligen Israel yang sering di-salah arti-kan sebagai pasukan khusus. Salah satu cara mereka adalah dengan mengirimkan paket dalam bentuk kecil-kecil. Sehingga informasi yang si penyusup sangat kecil dan tidak berguna. Ini salah satunya diterapkan dengan dukungan dari aplikasi WinRar yang memperbolehkan metode kompresi dengan ukuran sangat kecil sehingga file berukuran 5 giga byte bisa dipecah menjadi 25 lebih paket yang lebih kecil.

Sekarang coba dengan dua buah kalimat satu ini: a3201f10 dan f59f7883, juga dengan ini: a3201f10f59f7883. Apa perbedaan dari angkah paling atas yg sebesar 32bit dan angkah berikutnya yang hanya 8bit dan 16 bit. Tanpa perlu algoritma untuk menghubungkan angkah2 tersebut, angkah tersebut sudah pasti terhubung. karena angkah yang hanya 8bit dan 16bit adalah bagian kecil dari angkah 32bit yang akan kita gunakan untuk pertukaran data dengan database. Coba saja masukan SQL Injection, bakal bakal missing parameter yang muncul. Bukannya tereksekusi.

// fungsi untuk memecahkan hasil dari $_POST
function splitdata ( $vartype , $datavar )
{
   if($vartype == ""user"")
   {
      $dataarray = str_split ( hash(""sha512"",$datavar) , 16 );
     $newarray[0] = $dataarray[2];
      $newarray[1] = $dataarray[5];
  }
  elseif($vartype == ""pass"")
   {
      $dataarray = str_split ( hash(""sha512"",$datavar) , 16);
      $newarray[0] = $dataarray[1];
      $newarray[1] = $dataarray[4];
  }
  return $newarray;
}

// proses untuk mendapatkan hasil pecahannya
$username=splitdata(""user"",$_POST[""httpvarauthuser""]);
$password=splitdata(""pass"",$_POST[""httpvarauthpass""]);
// username sekarang tinggal 32bit dari awalnya 128bit
$user0=$username[0]; $user1=$username[1];
// password sekarang tinggal 32bit dari awalnya 128bit
$pass0=$password[0]; $pass1=$password[1];

// ketika ke table data base tinggal gunakan perintah seperti ini
variable $user0, $user1, $pass0, $pass1 digunakan untuk mengecek ke databasenya.

About Author

Tentang PHP Indonesia

PHP Indonesia adalah sebuah komunitas untuk semua orang yang mencintai PHP. Fokus utama kami adalah pemrograman menggunakan bahasa PHP, namun tidak menutup kemungkinan pembahasan yang mencakup keseluruhan LAMP stack. Topik bisa dari pemrograman PHP, penanganan memcached, optimasi database, konfigurasi server, tuning server web, application deployment, framework PHP, hosting pilihan dan sebagainya.

Petunjuk Penulisan

Berikut ini adalah beberapa petunjuk penulisan artikel. Petunjuk dibuat bukan untuk membatasi tetapi demi menjaga kualitas artikel yang terpublikasi di situs ini. Selain itu, keseragaman gaya bahasa dapat menjaga readibilitas (tingkat keterbacaan) sehingga pembaca akan lebih nyaman dalam membaca artikel di situs ini.