開發人員、資料庫結構描述師和系統管理員在部署PHP應用程式到伺服器之前都應該採取預防措施。大部分預防措施可以通過幾行代碼或者把應用程式設定稍作調整即可完成。
#1:管理安裝指令碼
如果開發人員已經安裝了一套第三方應用程式的PHP指令碼,該指令碼用於安裝整個應用程式的工作群組件,並提供一個存取點。大多數第三方軟體包都建議在安裝後,刪除該目錄包含的安裝指令碼。但開發人員希望保留安裝指令碼,他們可以建立一個.htaccess檔案來控制管理訪問目錄。
AuthType Basic
AuthName “Administrators Only”
AuthUserFile /usr/local/apache/passwd/passwords
Require valid-user
任何未經授權的使用者,如果試圖訪問一個受保護的目錄,將會看到一個提示,要求輸入使用者名稱和密碼。密碼必須匹配指定的“passwords”檔案中的密碼。
#2:標頭檔
在很多情況下,開發人員可以將分布在應用程式的幾個指令碼包含進一個指令碼裡。這些指令碼將包含一個“include”指令,整合單個檔案到原始頁面的代碼裡。當“include”檔案包含敏感資訊,包括使用者名稱、密碼和資料庫存取金鑰時,該檔案的副檔名應該命名成“.php ",而不是典型的“.inc”擴充。“.php”擴充確保php引擎將處理該檔案,並防止任何未經授權的訪問。
#3: MD5 vs. SHA
在某些情況下,使用者最終會建立自己的使用者名稱和密碼,而網站管理員通常會對錶單提交的密碼加密,並儲存在資料庫中。在過去的幾年中,開發人員會使用MD5(訊息摘要演算法)函數,加密成一個128位的字串密碼。今天,很多開發人員使用SHA-1(安全散列演算法)函數來建立一個160位的字串。
#4: 自動全域變數
php.ini檔案中包含的設定稱為“register_globals”。P伺服器會根據register_globals的設定,將會為伺服器變數和查詢字串自動建立全域變數。在安裝第三方的軟體包時,比如內容管理軟體,像Joomla和Drupal,安裝指令碼將引導使用者把register_globals設定為“關閉”。將設定改變為“關閉”可以確保未經授權的使用者無法通過猜測變數名稱及驗證密碼來訪問資料。
#5: 初始設定變數和值
許多開發人員都落入了執行個體化變數不賦值的陷阱,原因可能由於時間的限制而分心,或缺乏努力。身分識別驗證過程中的變數,應該在使用者登入程式開始前就有值。這個簡單的步驟可以防止使用者繞過驗證程式或訪問網站中某些他們沒有許可權的地區
http://www.bkjia.com/PHPjc/325623.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/325623.htmlTechArticle開發人員、資料庫結構描述師和系統管理員在部署PHP應用程式到伺服器之前都應該採取預防措施。大部分預防措施可以通過幾行代碼或者把應用...