Porting Register Globals
Artikel pendek ini saya tulis sehubungan dengan masih banyaknya pertanyaan tentang porting program-program PHP lama yang masih mengasumsikan register global on ke web hosting yang tidak memasang opsi register globalnya pada posisi off.
Pada awal perkembanganannya, sistem pemrograman PHP memberi kemudahan pada pengguna dengan memasukkan variabel semua parameter masukan dari web browser bagi dengan metoga GET, POST maupun COOKIE secara otimatis sehingga nama-nama variabel parameter tersebut langsung bisa dirujuk namanya pada skrip action. Karena PHP tidak membedakan sumber value variabel apakah dari GET, POST atau COOKIE, maka value untuk parameter dari COOKIE atau POST misalnya dapat disuntik dengan memanfaatkan pengetikan URL yang memuat pengisian nilai parameter GET. Apabila kita berhati-hati, otomatisasi pengisian variabel yang disebut register globals ini tidak selalu berakibat fatal namun secara umum dinilai membuka lubang keamanan cukup tinggi.
Pada sistem web server dengan fasilitas PHP yang baru, opsi register globals dimatikan by default. Banyak sistem-sistem program PHP lama menjadi tidak berfungsi karena pad umumnya mengandalkan register globals. Agar dapat berfungsi kembali, register globals dapat disimulasikan dengan menyisipkan
//script 1: simulasi register globals
foreach ($_GET as $key => $value) ${$key} = $value; foreach ($_POST as $key => $value) ${$key} = $value; foreach ($_COOKIE as $key => $value) ${$key} = $value;//end script 1
di awal setiap program yang menerima parameter-parameter CGI tersebut. Perlu saya ingatkan kembali bahwa tindakan mematikan register globals dilakukan untuk menutup lubang keamanan yang mungkin ada pada program-program lama kita. Karena itu, membukanya kembali dengan skrip tersebut beresiko terbukanya kembali lubang keamanan yang diakibatkan oleh register globals tersebut.
Untuk memperbaiki program, kita harus menelusuri semua variabel cgi global yang digunakan dalam sistem program php kita yang perlu disisipkan di awal program dalam bentuk
$namavar = $_POST['namavar'];untuk setiap parameter COOKIE, POST dan GET. Untuk sistem yang panjang, penelusuran tersebut bisa makan waktu cukup lama untuk bisa mendapatkan semua variabel yang dibutuhkan. Untuk mempercepat pekerjaan migrasi register globals tersebut, silakan coba script berikut ini:
//script 2: menggali nama-nama variabel yang digunakan
function print_global($mtd, $key, $value){ print "$$key=$_$mtd"."['$key'];n"; } foreach ($_GET as $key => $value) print_global("GET",$key,$value); foreach ($_POST as $key => $value) print_global("POST",$key,$value); foreach ($_COOKIE as $key => $value) print_global("COOKIE",$key,$value);//end penggalian nama variabel
Sisipkan di awal semua program action. Jalankan programnya dan copy tambahan teks program di bagian awal program tersebut untuk di pastekan sebagai bagian awal dari program-program action yang bersangkutan. Sebagai contoh, program tersebut saya sisipkan dibagian atas modul auth.php website ini dan kemudian saya coba isikan komentar artikel ini. Hasilnya pada bagian atas muncul tambahan teks:
Contoh hasil penggalian nama variabel:
$modul=$_GET['modul']; $dir=$_GET['dir']; $artikel=$_GET['artikel']; $posted=$_POST['posted']; $realname=$_POST['realname']; $message=$_POST['message']; $visrev=$_POST['visrev']; $keycode=$_POST['keycode']; $adminx=$_COOKIE['adminx'];Untuk selanjutnya pendefinisian variabel-variabel ini bisa ditempatkan dibagian atas auth.php tersebut untuk mendapatkan kembali nilai variabel yang dihilangkan oleh setting off dari register globals. Selamat mencoba.
Kirim Komentar
23. salsa wisata
Sisipkan di awal semua program action. Jalankan programnya wisata dan copy tambahan teks program di bagian awal program tersebut untuk di pastekan sebagai bagian awal dari program-program action yang paket liburan bersangkutan.
23-08-21 07:50
22. tour
Pada awal perkembanganannya, sistem pemrograman PHP memberi kemudahan pada pengguna dengan memasukkan variabel semua parameter masukan dari web browser bagi dengan metoga GET
23-08-21 07:48
21. umroh murah
Makasih sudah mau berbagi pak.. nice post
01-03-17 11:33
20. hafiza
nice info, visite our website : http://www.hafizabysalma.com/
01-12-16 08:54
19. hafiza
nice info, visite our website : http://www.hafizabysalma.com/
01-12-16 08:54
18. rahasia wanita bijak
mantab
http://www.jualtasbrandedmurah.com
http://www.ratubelanjaonline.com
http://www.rahasiawanitabijak.com
12-02-16 05:52
17. tas murah
okeee
http://www.jualtasbrandedmurah.com
http://www.ratubelanjaonline.com
http://www.rahasiawanitabijak.com
12-02-16 05:49
16. belanja online
nice
http://www.jualtasbrandedmurah.com
http://www.ratubelanjaonline.com
http://www.rahasiawanitabijak.com
12-02-16 05:49
15. tas branded murah
great info
http://www.jualtasbrandedmurah.com
http://www.ratubelanjaonline.com
http://www.rahasiawanitabijak.com
12-02-16 05:48
14. Pulau Tidung
Masih work kah ?
29-10-14 12:42
13. jj
ok
17-12-11 04:50
12. oky
pak bisa minta tolong editing script????
11-11-09 10:18
11. prastowo
test render internal link
28-02-09 10:12
10. Ahlul
Untuk solusi lain bisa memakai:
.htaccess dengan value:
php_flag register_globals On
atau dengan php.ini
register_globals = On
28-02-09 09:37
9. arya
kalo kelemahan atau kelebihannya apa ya?
27-10-08 11:49
8. ;l;l;l;
lkjlkjljkl
22-06-07 04:01
7. Bayu
Terima kasih atas sharing artikelnya, sangat membantu saya pak...
salam,
25-05-07 02:39
6. anggi
bagai mana cara membuat suatu program web...tolong berikan satu contoh...karna saya sedang mempelajari WEB PROGRAMING WITH PHP....tolong berikan satu contoh program dengan alur yg mudah di pahami.
Anggi_syach@yahoo.com
Terima Kasih
22-04-07 11:04
5. prastowo
Untuk menjalankan script yang memerlukan register global, tiga baris script 1 dimasukkan ke bagian awal file indul (index.php) atau file script yang selalu diincludekan di bagian atas.
Script 2 tidak ada hubungannya dengan scrip 1. Yang kedua ini kita gunakan untuk migrasi program lama ke program baru. Caranya, tempelkan script tersebut ke bagian atas program seperti script 1. Setelah dijalankan akan muncul sederatan arrray asignment seperti contoh di atas.
2. Save baris-baris baru ini ke file. Selenjutnya, buang script 2 yang tadi disisipkan dan ganti dengan baris-baris output darn langkah pertama. Dengan demikian semua variabel yang diperlukan sudah kita definisikan sendir di bagian atas program sebagaimana disarankan oleh pakar keamanan sistem komputer.
18-04-07 12:30
4. rudim
saya sudah mencoba menyisipkan tiga baris kode di atas, pada awal script. Berhasil sebagian. Tetapi pada sebagian script tetap belum jalan.
Saya belum jelas cara menjalankan script untuk migrasi di atas. tolong saya bisa dijelaskan lebih detail lagi.Pada penjelasan mulai dari ->function...
18-04-07 09:16
3. rudim
saya sudah mencoba menyisipkan tiga baris kode di atas, pada awal script. Berhasil sebagian. Tetapi pada sebagian script tetap belum jalan.
Saya belum jelas cara menjalankan script untuk migrasi di atas. tolong saya bisa dijelaskan lebih detail lagi.
Pada penjelasan mulai dari
fuction...
18-04-07 09:15
2. Purba
Wah Pak, pas bgt, saya emang lg nyari2 soal register_global, lg nyoba mambo, di rekomended in sih off tp emang sih jd ada yg gak berfungsi ...
will try it right away
11-04-07 09:30
1. prastowo
Percobaan entry komentar untuk contoh melihat output skrip yang mendaftar variabel cgi.
06-04-07 11:05
Powered by Waton CMS. Semua tulisan dan image yang ada di homepage ini adalah tanggung jawab Bambang Nurcahyo Prastowo kecuali: (a) diubah oleh pihak yang tidak bertanggung jawab, (b) secara eksplisit disebutkan rujukan sumber luarnya, atau (c) komentar, tanggapan dari pembaca.