由於PHP使用變量時無須初始化,這就使得沒有經驗的程序員寫出不安全的代碼,特別是PHP的register_globals設置爲On時,所以從 PHP » 4.2.0 版開始配置文件中 PHP 指令 register_globals 的默認值從 on 改成 off 了
以下面這段代碼:php
<?php
// 當用戶合法的時候,賦值 $authorized = true
if (authenticated_user()) {
$authorized = true;
}
// 因爲並無事先把 $authorized 初始化爲 false,
// 當 register_globals 打開時,可能經過GET auth.php?authorized=1 來定義該變量值
// 因此任何人均可以繞過身份驗證
if ($authorized) {
include "/highly/sensitive/data.php";
}
?>
實際上這裏包含了第二條建議:程序員