PHP安全-全局變量與注冊
如果您還能記起早期WEB應(yīng)用開發(fā)中使用C開發(fā)CGI程序的話,一定會對繁瑣的表單處理深有體會。當(dāng)PHP的register_globals配置選項(xiàng)打開時(shí),復(fù)雜的原始表單處理不復(fù)存在,公用變量會自動建立。它讓PHP編程變得容易和方便,但同時(shí)也帶來了安全隱患。
事實(shí)上,register_globals是無辜的,它并不會產(chǎn)生漏洞,同時(shí)還要開發(fā)者犯錯(cuò)才行。可是,有兩個(gè)主要原因?qū)е铝四仨氃陂_發(fā)和布署應(yīng)用時(shí)關(guān)閉register_globals:
第一,它會增加安全漏洞的數(shù)量;
第二,隱藏了數(shù)據(jù)的來源,與開發(fā)者需要隨時(shí)跟蹤數(shù)據(jù)的責(zé)任相違背。
本書中所有例子都假定register_globals已被關(guān)閉,用超級公用數(shù)組如$_GET 和 $_POST取而代之。使用這些數(shù)組幾乎與register_globals開啟時(shí)的編程方法同樣方便,而其中的些許不便是值得的,因?yàn)樗岣吡顺绦虻陌踩浴?/p>
小提示
如果您必須要開發(fā)一個(gè)在register_globals開啟的環(huán)境中布署的應(yīng)用時(shí),很重要的一點(diǎn)是您必須要初始化所有變量并且把error_reporting 設(shè)為 E_ALL(或 E_ALL | E_STRICT)以對未初始化變量進(jìn)行警告。當(dāng)register_globals開啟時(shí),任何使用未初始化變量的行為幾乎就意味著安全漏洞。
相關(guān)文章:
