Wednesday, March 29, 2017

Register Global On dan Off

Register Global On dan Off

Ada pertanyaan menarik dari milis PHP yang sering saya ikuti. Hal ini sering sekali ditanyakan, dan banyak juga yang malas menjawab, karena terlalu seringnya masalah ini dibahas dan ditanyakan.

Fren, saya org yg sedang belajar utk menjadi programmer PHP, tapi script login.php saya tidak pernah mau konek ke database saat saya masukkan username dan password. Saya menggunakan PHP versi 4.3.6, Apache versi 2.0.49, phpmyadmin versi 2.6.0, MySQL.
Kebetulan, hari Minggu kemarin jalan-jalan sebentar ke Gramedia. Sambil melihat-lihat perkembangan buku-buku lokal. Saat awal-awal dibangku kuliah dulu, minimal selama dua bulan saya membeli satu buku komputer. Uangnya dari honor sebagai Asisten Lab, dan terkadang meminta tambahan dari orang tua :D. Sejak saya lebih dalam mengenal internet, mencari tutorial, pembahasan, dan contoh-contoh aplikasi, minat beli terhadap buku komputer menurun drastis. Ditambah lagi, buku-buku yang ada hanya menyajikan hal yang melulu. Tak ada pembahasan yang lebih menarik, dan lebih mendalam.
Kembali kepada pertanyaan diatas, masalah yang ada hanya berkutat pada Register Global. Rata-rata buku PHP yang beredar ditanah air, menerapkan Register Global yang bernilai On. Padahal hal ini sudah dianjurkan dan secara default dimatikan sejak PHP versi 4.2.0. Sebenarnya, apa perbedaan dari nilai On dan Off? Akan saya bahas disini.
Register global diset lewat file php.ini. Untuk pemakai Windows, file tersebut berada pada direktori Windows anda. Pemakai linux, biasanya pada direktori /usr/lib/php. Apa yang terjadi jika register global bernilai On? bahaya. Karena pada setting ini, semua variabel yang dikirim melalu metode post, get, juga variabel session dan cookie dianggap sama. Sebagai contoh:
<?
if(isset($submit)) {
echo $tes;
}
?>
<html>
<head>
<title>Register Global</title>
</head>
<body>
<form name="frm1" method="post">
<input type="text" name="tes" />
<input type="submit" name="submit" value="Kirim"
/>
</form>
</body>
</html>
Jika file tersebut kita simpan dengan nama tes.php, pada register global yang bernilai On, bisa dijalankan dengan cara seperti ini: http://localhost/tes.php.
Seolah, tak ada yang aneh dengan program diatas. Tapi tunggu dulu, bagaimana kalau kita menjalankan program diatas dengan URL berikut: http://localhost/tes.php?submit=1&tes=nahlho. Seolah, form yang kita buat tak berarti sama sekali. Ingat, ini baru sebuah file test, bagaimana jika hal ini terjadi pada sebuah aplikasi web yang sangat peka terhadap keamanan? oh, tak tahulah saya.
Sekarang, bagaimana merubah skrip diatas, agar bisa dijalankan dengan register global yang bernilai off? simpel saja. Lihat skrip dibawah ini:
<?
if(isset($_POST[submit])) {
echo $_POST[tes];
}
?>
<html>
<head>
<title>Register Global</title>
</head>
<body>
<form name="frm1" method="post">
<input type="text" name="tes" />
<input type="submit" name="submit" value="Kirim"
/>
</form>
</body>
</html>
Sekilas, jadi terlihat sulit, karena harus menambahkan “sesuatu” lagi. Tapi tak apa, inilah awal belajar PHP, memperhatikan keamanan skrip yang kita buat. Jika register global bernilai Off, maka, semua variabel yang datang, disikapi dari mana ia datang. Kebetulan, dalam skrip diatas, kita menggunakan form yang metodenya post, maka variabel yang diterima haruslah $_POST[nama_variabel]. Jika variabel itu berasal dari alamat URL, maka variabel itu haruslah seperti $_GET[nama_variabel].
Jangan menganjurkan saya untuk membuat buku PHP, karena sudah terlalu banyak buku PHP di tanah air. Inginnya sih membuat buku tentang XHTML dan CSS, karena sampai saat ini belum ada di tanah air, dan barangkali saja bisa meningkatkan jumlah pemakai blog di Indonesia. Tapi, lagi-lagi, hal ini terbentur dengan keadaan monitor, hardisk, dan CDRom dirumah yang sudah minta diganti.

sumber : http://didats.net/page/register-global-on-dan-off/

Go to link Download