Kontroversi yang paling menarik pada PHP adalah dalam penggunaan register global. Apakah akan di set ON atau OFF. Kali ini kita akan melihat contoh kesalahan script yang dapat ditembus apabila Register Global di set ON.
Ketika ON, maka register_globals akan memasukkan variabel ke script yang telah dibuat (seperti pada permintaan melalui form html). Hal ini sesuai dengan fakta bahawa PHP tidak membutuhkan inisialisasi dari variable, dan itu berarti akan sangat mudah bagi kita untuk menulis koding yang tidak terjamin keamanannya. komunitas PHP memutuskan untuk mengeset nilai default register global menjadi OFF. Terkadang, jika di set on, maka orang2 akan terbiasa menggunakan variabel2 yang bahkan mereka sendiri tidak tahu darimana variabel tersebut datang.
Kita akan lihat salah satu contoh dari kesalahan scripting ketika status register global di set ON
<?php
// define $otorisasi = true jika otentifikasi dari user telah valid
if (authenticated_user()) {
$otorisasi = true;
}
/* Karena pada sebelumnya kita tidak menginisialisasikan $otorisasi = false, maka otorisasi tersebut akan dilakukan melalui register global
misalnya dari GET auth.php?otorisasi=1
maka semua orang akan dianggap telah memiliki ototentifikasi yang valid (1 = true) */
if ($otorisasi) {
include “admin/data.php”;
}
?>
Jika register global = OFF, maka $otorisasi tidak akan dapat di set melalui request, dan script tersebut pun akan aman2 saja.
Contoh lain adalah pada penggunaan session. Register global = ON, maka kita dapat menggunakan variabel $username (contohnya) sebagai dasar dalam memulai session. tapi sekali lagi, apakah kita dapat mengetahui darimana nilai dari variabel tersebut dikirimkan?
Contoh session, tanpa memperdulikan status register global (ON atau OFF).
<?php
if (isset($_SESSION[‘username’])) {
echo “hallo {$_SESSION[‘username’]”;
} else {
echo “Halo, anda belum login. silahkan login terlebih dahulu”;
}
?>
Anda dapat menggunakan script berikut untuk mengetahui status register globals pada website anda:
<?php
$reglob = ini_get(‘register_globals’);
if($reglob == 1){
echo “register_globals ON”;
} else {
echo “register_globals OFF”;
}
?>
Jika register_globals di set ON, maka akan muncul tulisan “register_globals ON”, dan sebaliknya.
Untuk membuat register global ON pada script website Anda ada beberapa macam cara tergantung dari setingan server hosting itu sendiri di antaranya :
1. Menggunakan .htaccess
tuliskan baris perintah php_flag register_globals on pada file .htaccess untuk meng ON kan fungsi register global
2. Menggunakan php.ini
buatlah file menggunakan notepad lalu tuliskan perintah
register_globals = 1 atau bisa juga register_globals = on
berilah nama filenya dengan php.ini lalu simpanlah pada directory dimana Anda membutuhkan perintah register global ON.