多年來,PHP一直是一個穩定的、廉價的運作基于web應用程式的平台。像大多數基于web的平台一樣,PHP也是容易受到外部攻擊的,下面說說PHP網站安全 、PHP程式安全的幾個措施。
開發人員、資料庫架構師和系統管理者在部署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: 初始化變量和值