PHP安全-全局變量與注冊(cè)
如果您還能記起早期WEB應(yīng)用開發(fā)中使用C開發(fā)CGI程序的話,一定會(huì)對(duì)繁瑣的表單處理深有體會(huì)。當(dāng)PHP的register_globals配置選項(xiàng)打開時(shí),復(fù)雜的原始表單處理不復(fù)存在,公用變量會(huì)自動(dòng)建立。它讓PHP編程變得容易和方便,但同時(shí)也帶來了安全隱患。
事實(shí)上,register_globals是無辜的,它并不會(huì)產(chǎn)生漏洞,同時(shí)還要開發(fā)者犯錯(cuò)才行??墒牵袃蓚€(gè)主要原因?qū)е铝四仨氃陂_發(fā)和布署應(yīng)用時(shí)關(guān)閉register_globals:
第一,它會(huì)增加安全漏洞的數(shù)量;
第二,隱藏了數(shù)據(jù)的來源,與開發(fā)者需要隨時(shí)跟蹤數(shù)據(jù)的責(zé)任相違背。
本書中所有例子都假定register_globals已被關(guān)閉,用超級(jí)公用數(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)以對(duì)未初始化變量進(jìn)行警告。當(dāng)register_globals開啟時(shí),任何使用未初始化變量的行為幾乎就意味著安全漏洞。
相關(guān)文章:
1. ASP基礎(chǔ)知識(shí)VBScript基本元素講解2. Python 利用Entrez庫篩選下載PubMed文獻(xiàn)摘要的示例3. Python 制作查詢商品歷史價(jià)格的小工具4. Linux刪除系統(tǒng)自帶版本Python過程詳解5. Python3 json模塊之編碼解碼方法講解6. python 使用事件對(duì)象asyncio.Event來同步協(xié)程的操作7. Python sublime安裝及配置過程詳解8. Python 合并拼接字符串的方法9. Python插件機(jī)制實(shí)現(xiàn)詳解10. ASP.NET MVC使用jQuery ui的progressbar實(shí)現(xiàn)進(jìn)度條

網(wǎng)公網(wǎng)安備