PHP — мощный язык программирования и интерпретатор. Независимо от того, включается ли PHP в состав веб-сервера как модуль или исполняется как отдельное бинарное CGI-приложение, PHP умеет получать доступ к файлам, исполнять команды и открывать сетевые соединения на сервере. Эти свойства по умолчанию делают всё, что выполняется на веб-сервере, небезопасным. PHP разрабатывался как более безопасный язык для CGI-программ, чем языки программирования Perl или C, и при правильных настройках конфигурации времени компиляции и выполнения, а также правильных практиках программирования PHP даёт сочетание свободы и безопасности, которое требуется разработчикам.
Поскольку с PHP работают по-разному, настраивают параметры конфигурации и управляют поведением языка тоже по-разному. Широкий выбор опций гарантирует, что PHP будет помогать в достижении многих целей, но это также значит, что отдельные комбинации этих опций и конфигураций сервера сделают установку небезопасной.
Гибкость конфигурирования PHP в равной степени конкурирует с гибкостью кода. С PHP создают полноценные серверные приложения с доступной пользователю мощью операционной системы или простые включения на стороне сервера с небольшим риском в строго контролируемой среде. То, как создаётся эта среда и насколько она будет безопасной, зависит от PHP-разработчика.
Эта глава начинается с общих рекомендаций по безопасности, объясняет комбинации параметров конфигурации и ситуаций, в которых эти параметры безопасно использовать, и описывает соображения, которые касаются безопасного кода на каждом уровне взаимодействия.