ARI JULIANTO Network www.arijulianto.com

Oleh | PHP | | Dibaca 5.541 kali | 2 komentar

Seperti telah kita ketahui bahwasanya peluang SQL Injection tidak hanya berbahaya bagi data di database, tapi dampaknya bisa merembet juga ke keamanan server juga yang kalo udah parah bisa dilumpuhkan begitu saja. Contoh paling mudahnya adalah melakukan peintah DELETE dan UPDATE record. Yang paling parahnya jika si cracker berhasil menembus dengan bebas, maka peluang berbahayanya adalah melakukan DELETE semua data. Untuk itu diperlukan beberapa langkah pengamanan untuk mencegah SQL Injection.

Amankan Nama Tabel dan Nama Field di Database

Salah satu peluang terbesar jika tidak ada filter terhadap query adalah penamaan field dan tabel. Kenapa ini saya kategorikan sebagai suatu peluang celah keamanan? Karena jika nama field dan nama tabel mudah ditebak oleh user maka sang cracker akan dengan mudah melancarkan aksinya. Jadi, mulai dari sekarang mari kita hindari hal kurang aman ini, yakni menggunakan nama field dan nama tabel yang terlalu umum dan mudah ditebak. Sebagai bahan contoh ada tabel user atau users dan didalamnya ada field username, password, nama, email, dll. Ini sangat berpeluang atas keamanan dengan melakukan injeksi.

Filter dengan Parameter yang Divalidasi Lewat Query String

Cara kedua adalah filter inutan query string dengan .htaccess. Terkait manipulasi query string lewat htaccess, saya masih sering menemui inputan query string yang tidak difilter terlebih dahulu. Sebagai contoh kita lihat seting file .htaccess pada script berikut ini

# contoh 1: kurang safety
RewriteRule ^artikel/(.*)/(.*).html$ artikel.php?kategori=$1&item=$2 [NC, QSA]

# contoh 2: yang baik
RewriteRule ^artikel/([a-zA-Z0-9-_]+)/([a-zA-Z0-9-_]+).html$ artikel.php?kategori=$1&item=$2 [NC, QSA]

Berdasarkan contoh di atas, di contoh 1 inputan query string untuk kategori dan item dapat menerima inputan apapun. Adapun untuk contoh 2 inputan query string lebih aman karena difilter ulang, dalam hal ini hanya menerima inputan huruf (besar ataupun kecil), angka, karakter dash (-) dan karakter underscore (_). Jadi jika inputan kategori atau item diberi titik (.) maka tidak akan bisa mengeksekusi file karena format inputan requestnya tidak sesuai.

Baiklah segitu dulu untuk bahasan kali ini, kalo suatu saat nanti ada perubahan atau tabahan lagi akan saya update lagi tutorial ini. Kalo sahabat AJN semua ada ide atau tambahan atau komentar boleh dikirim lewat komentar di bawah.

Terima kasih semoga bermanfaat :)