PHP 是一种强大的语言,其解释器(无论是作为模块包含在 Web 服务器中还是作为单独的 CGI 二进制文件执行)都能够访问文件、执行命令并在服务器上打开网络连接。这些特性使得默认情况下 Web 服务器上的任何内容都不安全。PHP 的设计初衷就是成为一种比 Perl 或 C 更安全的编写 CGI 程序的语言,并且通过正确选择编译时和运行时配置选项以及适当的编码实践,它可以为您提供所需的自由和安全性的组合。
由于 PHP 的使用方式多种多样,因此有许多配置选项可以控制其行为。大量的选项保证您可以将 PHP 用于多种用途,但也意味着这些选项和服务器配置的组合会导致不安全的设置。
PHP 的配置灵活性与代码灵活性同样出色。PHP 可用于构建完整的服务器应用程序,并具备 shell 用户的所有功能,也可用于在严格控制的环境中进行简单的服务器端包含,风险较低。您如何构建该环境以及它的安全性在很大程度上取决于 PHP 开发人员。
本章首先介绍一些通用的安全建议,解释不同的配置选项组合及其安全使用情况,并描述针对不同安全级别进行编码时的不同注意事项。