萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php5.4.0的register globals設置

php5.4.0的register globals設置

在php中register globals函數在php5.3.0開始移除在5.4.0開始廢棄了,但還是有很多的網站都有這個函數,下面我來介紹一些解決辦法。

php4.2.0的版本是沒有用過,php官網提到:php最具爭議的變化是php4.2.0版本配置中register_globals的On改為了Off,對此項依賴的是如此普遍以至於很多人不知道他的存在而以為php本來就是這麼工作的,下面解釋這個指令如何寫出不安全的代碼,但是要知道這個指令沒有什麼不安全的地方,只有不安全的代碼。

當register_globals打開以後,很多代碼都可以被注入比如html表單提交的內容,再加上php在使用變量的時候無需初始化,這就使得更容易出現不安全的代碼。比如我將php.ini中register_globals設置為On開始狀態:

 代碼如下 復制代碼


<?php
// 當用戶合法的時候,賦值 $flag = true
if (is_user()) {
    $flag= true;
}

// 由於並沒有事先把 $flag初始化為 false,
// 當 register_globals 打開時,可能通過GET user.php?flag=1 來定義該變量值
// 所以任何人都可以繞過身份驗證
if ($flag) {
    include "/highly/sensitive/data.php";
}
?>  


 以上代碼在register_globals = On的時候,由於$flag沒有初始化,在後面判斷的時候通過get方式的flag = 1也可以執行include。

copyright © 萬盛學電腦網 all rights reserved