Ganti Path model GET dengan PATH_INFO
Dalam dunia koding tentu Method GET sudah tidak asing lagi,,, Namun kita ketahui bersama, kelemahan akan terjadi jika kita tidak bisa mengantisipasinya , para tangan-tangan jahil dengan mudah dapat mengetahui pengiriman data lewat method GET apabila tidak kita enkripsi , pada artikel sebelumnya juga admin suda membahas beberapa Cara enkripsi url pada halaman web , Fungsi Enkripsi Parameter Dan Variabel Pada PHP dan Mencegah Exploit URL dengan enkripsi Method Get PHP
Pada tutorial ini admin akan membahas sedikit trik bagaimana kita mengganti Path Model Get dengan PATH_INFO,
Seringkali dalam sebuah proses koding, seorang programmer merancang path seperti contoh berikut ini :
http://namaserver.com/index.php?module=satu&submodule=dua&aksi=baca&id=23
Sedangkan pada kode PHP, akan ditangkap dengan kira-kira adalah seperti demikian:
$module = cleanstring( $_GET[module] );
$submodule = cleanstring( $_GET[submodule] );
$aksi = cleanstring( $_GET[aksi] )
$id = cleanstring( $_GET[id] );
Namun ternyata, path model demikian sebenarnya sangat tidak direkomendasikan di kalangan developer. Alasannya antara lain sebagai berikut:
- Tidak Search Engine Friendly. Search Engine lebih mudah melihat path seperti demikian : http://namaserver.com/kategori/subkategori/id/judul. Meski demikian sebenarnya masih bisa juga model GET tersebut disetting dengan menggunakan fasilitas mod_rewrite dari bawaan web server
- Alasan keamanan. Biasanya, sebuah mesin pencari bug SQL Injection, Remote File Inclusion, Local File Inclusion, Local File Executable akan lebih mudah menangkap bug dari model path dengan GET. Seperti misalnya adalah :
- Lebih mudah untuk dikatakan jika seseorang memberitahu rekannya tidak dengan posisi offline. Tentu akan lebih mudah mengatakan : “ada di halaman http://ini.com/artikel/baca/nomer” daripada “ada di halaman http://ini.com/?mod=artikel&aksi=baca&id=nomer”
PHP sebenarnya telah menyediakan sebuah model method untuk request halaman, salah satunya adalah
$_SERVER['PATH_INFO']
Jika kita ketikkan di halaman PHP sebagai berikut:
$pathurl = $_SERVER['PATH_INFO'];
echo $pathurl;
Maka ketika halaman tersebut dibuka pada web server dengan url seperti ini : http://namaserver/artikel/baca/11 maka $pathurl nya adalah : /artikel/baca/11
Dengan demikian jika akan diuraikan pathurl tersebut maka bisa dilakukan dengan melakukan penambahan function explode, yang mengurai sesuatu string berdasar karakter tertentu menjadi array. Misal sebagai berikut:
$r_pathurl = explode("/",$pathurl);
print_r( $r_pathurl );
Maka pada web browser akan muncul sebagai berikut:
Array
(
[0] =>
[1] => artikel
[2] => baca
[3] => 11
)
Dengan memanfaatkan array tersebut, bagi yang terbiasa dengan GET method, akan dapat mengurai menjadi seperti demikian:
$module = cleanstring( $r_pathurl[1] );
$aksi = cleanstring( $r_pathurl[2] );
$id = cleanstring( $r_pathurl[3] );
Nah selanjutnya, kita bisa koding lagi seperti biasa. Perubahan hanya terjadi dengan mengganti GET method dari url, menjadi item array. Pada mod rewrite di htaccess, kita tinggal melakukan pembuangan kata index.php saja. Metode seperti inilah yang diterapkan oleh framework-framework PHP seperti CI, CakePHP, Yii dan lain sebagainya.