PHP 是一個功能強大的語言,無論直譯器是以模組方式包含在網頁伺服器中,或是以獨立的 CGI 執行檔執行,它都能夠存取伺服器上的檔案、執行指令以及開啟網路連線。這些特性使得在網頁伺服器上執行的任何程式在預設情況下都不安全。PHP 的設計特別強調比 Perl 或 C 更安全地編寫 CGI 程式,透過正確選擇編譯時期和執行時期的設定選項,以及良好的編碼實務,它可以提供您所需的自由度和安全性的完美結合。
由於 PHP 有許多不同的使用方式,因此也有許多設定選項可以控制它的行為。大量的選項確保您可以將 PHP 用於各種用途,但這也意味著這些選項和伺服器設定的組合可能會導致不安全的設定。
PHP 設定的彈性與程式碼的彈性不相上下。PHP 可以用來建構完整的伺服器應用程式,擁有 shell 使用者的所有權限,或者它也可以用於簡單的伺服器端嵌入,在嚴格控制的環境中將風險降到最低。如何建構該環境以及其安全性,很大程度上取決於 PHP 開發人員。
本章首先提供一些通用的安全性建議,說明不同的設定選項組合及其可安全使用的場景,並描述針對不同安全級別進行編碼的不同考量。