|
Register Global
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 atau OFF pada script website Anda ada beberapa macam cara di
antaranya dengan menggunakan file php.ini atau menambahkan baris
perintah pada .htacess
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 simpan pada directory dimana Anda membutuhkan
perintah register global ON.
|