PHP安全-全局變量與注冊
如果您還能記起早期WEB應(yīng)用開發(fā)中使用C開發(fā)CGI程序的話,一定會對繁瑣的表單處理深有體會。當PHP的register_globals配置選項打開時,復(fù)雜的原始表單處理不復(fù)存在,公用變量會自動建立。它讓PHP編程變得容易和方便,但同時也帶來了安全隱患。
事實上,register_globals是無辜的,它并不會產(chǎn)生漏洞,同時還要開發(fā)者犯錯才行??墒?,有兩個主要原因?qū)е铝四仨氃陂_發(fā)和布署應(yīng)用時關(guān)閉register_globals:
第一,它會增加安全漏洞的數(shù)量;
第二,隱藏了數(shù)據(jù)的來源,與開發(fā)者需要隨時跟蹤數(shù)據(jù)的責(zé)任相違背。
本書中所有例子都假定register_globals已被關(guān)閉,用超級公用數(shù)組如$_GET 和 $_POST取而代之。使用這些數(shù)組幾乎與register_globals開啟時的編程方法同樣方便,而其中的些許不便是值得的,因為它提高了程序的安全性。
小提示
如果您必須要開發(fā)一個在register_globals開啟的環(huán)境中布署的應(yīng)用時,很重要的一點是您必須要初始化所有變量并且把error_reporting 設(shè)為 E_ALL(或 E_ALL | E_STRICT)以對未初始化變量進行警告。當register_globals開啟時,任何使用未初始化變量的行為幾乎就意味著安全漏洞。
相關(guān)文章:
1. 存儲于xml中需要的HTML轉(zhuǎn)義代碼2. 完美解決vue 中多個echarts圖表自適應(yīng)的問題3. python 浮點數(shù)四舍五入需要注意的地方4. JAMon(Java Application Monitor)備忘記5. Springboot 全局日期格式化處理的實現(xiàn)6. SpringBoot+TestNG單元測試的實現(xiàn)7. python開發(fā)一款翻譯工具8. 利用CSS制作3D動畫9. Java GZip 基于內(nèi)存實現(xiàn)壓縮和解壓的方法10. jsp+servlet簡單實現(xiàn)上傳文件功能(保存目錄改進)