Sebenarnya ada banyak teknik yang biasa dilakukan peretas dalam menjalankan aksinya untuk membobol situs web. Menurut pantauan Cyber4rt, beberapa penggunaan teknik sql injection adalah melalui POST method melalui form dan GET method atau melalui link yang memiliki parameter, misalnya:
http://www.domain.com/halaman.php?id=8
Link di atas memiliki parameter id dan biasanya diikuti dengan angka atau kata tertentu. Angka atau kata tersebut menunjukkan id unik dari artikel yang ingin ditampilkan pada halaman web. Dengan menambahkan query sql tertentu pada id tersebut yang bisa mengakibatkan munculnya pesan error, peretas akan mampu menampilkan isi dari database hingga ke akar-akarnya khususnya user admin dan password.
Gambar: Dbswebsite.com |
Di sini Cyber4rt tidak akan menjelaskan teknik sql injection, tapi kita akan belajar bagaimana cara mencegah teknik tersebut. Pencegahan yang akan kita gunakan kali ini yaitu mengabaikan query yang disisipkan oleh peretas dengan menerapkan teknik casting nilai parameter ke dalam tipe data integer.
Pada umumnya, dalam script halaman artikel, contoh: halaman.php, di dalamnya terdapat perintah seperti berikut:
<?php
$id = $_GET['id'];
/* script agar menampilkan halaman dengan id tertentu*/
$id = $_GET['id'];
/* script agar menampilkan halaman dengan id tertentu*/
?>
Perintah $id = $_GET['id']; di atas digunakan agar bisa membaca nilai parameter id untuk menampilkan halaman berdasar dari id tersebut. Teknik casting dapat diterapkan pada script halaman.php dengan menambahkan function abs dan int sehingga menjadi:
<?php
$id = abs((int) $_GET['id']);
/* script agar menampilkan halaman dengan id tertentu*/
$id = abs((int) $_GET['id']);
/* script agar menampilkan halaman dengan id tertentu*/
?>
Function int di atas berfungsi untuk menghilangkan query yang disisipkan pada parameter dalam url/link. Sebagai contoh, misalkan Anda memiliki sebuah string id='8 union all select 1,concat(user,0x3a,pass,0x3a,email) from users--. Apabila id ini di-casting ke dalam integer maka akan tetap menghasilkan id=8
Sedangkan function abs berfungsi untuk menjaga agar nilai parameter id adalah bernilai positif. Salah satu tool sql injection yang bernama Havij, tidak akan mempan jika Anda menggunakan function ini.
Selamat mencoba dan semoga bermanfaat.