Tips PHP : Teknik Untuk Mengurangi Resiko SQL Injection dengan Script Filter Parameter HTTP

Posted on

Sobat sekalian, Pernahkah sahabat berpikir sekiranya blog yang kita bikin beresiko di bobol oleh para orang yang tak bertanggung jawab ? atau tahukah sahabat sekiranya seluruh hal itu benar-benar merugikan ? tentu sahabat benar-benar tak ingin blog yang sahabat bikin di bobol oleh orang jahil dan tak bertanggung jawab, So ,, Bagi mengatasi hal tersebut, saya sedikit berbagi tips atau cara bagi mengatasinya. Seketika saja ke TKP …!!!
Diantara bug yang sangat ditakuti di dunia pemrograman web ialah : SQL Injection Vulnerability. Pada dunia hacking sering disebut dengan SQLiv. Bug ini termasuk sangat banyak dijumpai publikasinya di situs-situs pempublish bug dan hacking. SQL Injection ini termasuk bug dengan jenis resiko tinggi. Injeksi SQL biasanya dilakukan dengan cara memasukkan command atau sintaks tambahan ke pada FORM yang terdapat pada web tersebut, bagus FORM di address bar, maupun FORM yang terdapat di content.

Basic Teknis

1. Serangan GET Methode

Pada membangun web, biasanya kita akan gunakan pemanggilan ID atau kode unik bagi mengundang suatu konten.
Misalnya :

Karenanya, proses SQL yang yang kemungkinan akan dibentuk ialah :

Apa yang terjadi apabila seseorang menambahkan command di belakang URL tersebut?

dan berikutnya. Bila penambahan 1=1 dan 1=0 menghasilkan efek yang berbeda, dengan
1=1 posting/berita tetap muncul (tak error)
1=0 berita tak muncul (error)

Error message memang dapat saja ditutup dengan mengganti value PHP.INI dengan display_errors=’false’. Namun proses error tetap saja terjadi. Karenanya sesungguhnya sintaks command di belakang parameter ID itu diproses oleh script. Apakah ini berbahaya ? Tentu ia, ini benar-benar berbahaya. Biasanya penyusup akan menggunakan methode UNION bagi menjalankan serangan berikutnya. Anggap pada tabel berita bagian yang diambil ialah terdapat 4 kolom/field

Proses UNION ialah proses dua SELECT yang mesti mempunyai jumlah field terpanggil yang sama. Bila hingga proses UNION tak sama jumlah fieldnya, karenanya akan terjadi error. Error ialah informasi berharga bagi seorang intruder. Misal si intruder mencoba menjalankan pemanggilan selaku berikut :

karenanya halaman tersebut tak akan muncul content. Dan kemungkinan dia dapat melanjutkan ke

hingga

Di ketika ini, selain menunjukkan posting content tersebut, pun akan menampilkan tulisan 1,2,3,4 sesuai dengan fieldnya. Ketika demikianlah si intruder memanfaatkan celah seperti berikut:

Pencarian versi MySQL

Pencarian nama database yang sedan digunakan atau aktif

Pencarian nama user atau User Name database aktif

Pencarian nama database lain

Pencarian nama tabel bagi database ‘blog’ misal

Pencarian nama kolom / field bagi tabel ‘user’ pada database ‘blog’ misal

Pencarian data pada kolom user atau password

Setelah memperoleh user dan password dari tabel user, karenanya dapat dieksekusi Login ke pada form. Proses lain dapat pun dengan mencoba membaca file pada aplikasi atau menulis file pada aplikasi

atau bahkan

Cerita mengenai hacking dengan sql injection akan dibahas pada posting lain.

2. Serangan POST Method

Serangan ini biasanya dilakukan di FORM login.
=true){$e_s=array(

$id = filter_param($_GET[‘id’]);
$username = filter_param($_POST[‘username’]);
$password = filter_param($_POST[‘password’]);

SQL Injection dapat terjadi di seluruh jenis database. Oracle, SQLServer, Access dan lain-lain. Di windows, SQL Server pun mempunyai kegunaan executable yang lumayan berbahaya.

Semoga bermanfaat.