PHP安全-全局變量與注冊
如果您還能記起早期WEB應(yīng)用開發(fā)中使用C開發(fā)CGI程序的話,一定會(huì)對繁瑣的表單處理深有體會(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)閉,用超級公用數(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)文章:
1. JSP 中response.setContentType()的作用及參數(shù)2. idea開啟代碼提示功能的方法步驟3. ASP.NET MVC使用jQuery的Load方法加載靜態(tài)頁面及注意事項(xiàng)4. Docker究竟是什么 為什么這么流行 它的優(yōu)點(diǎn)和缺陷有哪些?5. idea關(guān)聯(lián)maven的使用詳解6. Visual Studio 2022常見的報(bào)錯(cuò)以及處理方案圖文詳解7. django-csrf使用和禁用方式8. IntelliJ IDEA 部署 Web 項(xiàng)目,看這一篇夠了!9. 原生js實(shí)現(xiàn)瀑布流效果10. 關(guān)于PHP操作文件的一些FAQ總結(jié)
