Использование PHP как двоичного CGI это опция установки, когда, по некоторым соображениям, нет желания интегрировать PHP как модуль в программу-сервер (такую как Apache) или когда PHP будет использоваться с различными видами CGI-оболочек для создания для скриптов безопасной среды chroot и setuid. Такая инсталяция обычно заключается в установке исполняемого файла PHP в директорию cgi-bin web-сервера. CERT advisory CA-96.11 рекомендует не помещать никакие интерпретаторы в директорию cgi-bin. Даже если исполняемый файл PHP используется как самостоятельный интерпретатор, PHP разработан таким образом, чтобы предотвратить атаки при таком варианте установки:
Доступ к системным файлам: http://my.host/cgi-bin/php?/etc/passwd
Информация запроса в url после знака вопроса (?) передаётся интерпретатору как аргументы командной строки CGI-интерфейсом. Обычно интерпретаторы открывают и выполняют файл, специфицированный как первый аргумент командной строки.
При вызове как исполняемый CGI, PHP не выполняет аргументы командной строки.
Доступ к любому web-документу на сервере: http://my.host/cgi-bin/php/secret/doc.html
Информация пути/path в url после имени PHP-экзешника, /secret/doc.html, используется по
В PHP опция конфигурации времени компиляции --enable-force-cgi-redirect и директивы времени выполнения doc_root и user_dir могут использоваться для предотвращения таких нападений, если дерево документов сервера содержит директории с ограниченным доступом. См. далее рассмотрение различных комбинаций.
Если на вашем сервере нет содержимого, доступ к которому ограничен паролем
или ip, то нет необходимости в применении этих опций конфигурации.
Если ваш web-сервер не разрешает выполнять перенаправление или если он не
имеет способа такого взаимодействия с исполняемым PHP, чтобы запрос был
безопасным, вы можете специфицировать опцию
--enable-force-cgi-redirect
для конфигурирования скрипта. Вы также должны гарантировать, что ваши PHP-скрипты
не основываются на каком-либо другом способе вызова скриптов: ни на прямом
http://my.host/cgi-bin/php/dir/script.php, ни на перенаправлении http://my.host/dir/script.php.
Перенаправление может быть сконфигурировано в Apache через использование директив AddHandler и Action (см. ниже).
Эта опция времени компиляции предотвращает вызов PHP кем бы то ни было прямо в url, например, http://my.host/cgi-bin/php/secretdir/script.php. Вместо этого PHP будет разбирать в этом режиме только в том случае, если пройдено правило перенаправления web-сервера.
Обычно перенаправление в конфигурации Apache выполняется следующими директивами: