PHP安全之用戶提交的數(shù)據(jù)
很多 PHP 程序所存在的重大弱點并不是 PHP 語言本身的問題,而是編程者的安全意識不高而導致的。因此,必須時時注意每一段代碼可能存在的問題,去發(fā)現(xiàn)非正確數(shù)據(jù)提交時可能造成的影響。
Example #1 危險的變量用法
<?php // 從用戶目錄中刪除一個文件,或者……能刪除更多的東西? unlink ($evil_var); // 記錄用戶的登陸,或者……能否在 /etc/passwd 添加數(shù)據(jù)? fwrite ($fp, $evil_var); // 執(zhí)行一些普通的命令,或者……可以執(zhí)行 rm -rf * ? system ($evil_var); exec ($evil_var);?>
必須時常留意你的代碼,以確保每一個從客戶端提交的變量都經(jīng)過適當?shù)臋z查,然后問自己以下一些問題:
此腳本是否只能影響所預期的文件?非正常的數(shù)據(jù)被提交后能否產(chǎn)生作用?此腳本能用于計劃外的用途嗎?此腳本能否和其它腳本結合起來做壞事?是否所有的事務都被充分記錄了?在寫代碼的時候問自己這些問題,否則以后可能要為了增加安全性而重寫代碼了。注意了這些問題的話,也許還不完全能保證系統(tǒng)的安全,但是至少可以提高安全性。
還可以考慮關閉 register_globals,magic_quotes 或者其它使編程更方便但會使某個變量的合法性,來源和其值被搞亂的設置。在開發(fā)時,可以使用 error_reporting(E_ALL) 模式幫助檢查變量使用前是否有被檢查或被初始化,這樣就可以防止某些非正常的數(shù)據(jù)的撓亂了。
相關文章:
1. vue style width a href動態(tài)拼接問題的解決2. Java源碼解析之接口List3. 在vue中獲取wangeditor的html和text的操作4. python mysql 字段與關鍵字沖突的解決方式5. Python用K-means聚類算法進行客戶分群的實現(xiàn)6. Java xml數(shù)據(jù)格式返回實現(xiàn)操作7. python編寫五子棋游戲8. 解決Android Studio Design界面不顯示layout控件的問題9. 使用vue-cli創(chuàng)建項目并webpack打包的操作方法10. python讀取中文路徑時出錯(2種解決方案)
