El uso de PHP como un binario CGI es una opci贸n para el tipo de situaciones en las que por alguna raz贸n no se desea integrar PHP como m贸dulo de alg煤n software de servidor web (como Apache), o en donde se espera usar PHP con diferentes tipos de capas que envuelven el entorno CGI para crear ambientes chroot y setuid seguros para la ejecuci贸n de scripts. Esta configuraci贸n usualmente involucra la instalaci贸n de un binario ejecutable del int茅rprete PHP en el directorio cgi-bin del servidor web. El aviso de seguridad de CERT CA-96.11 recomienda que se evite la colocaci贸n de cualquier int茅rprete bajo cgi-bin. Incluso si el binario PHP puede ser usado como un int茅rprete independiente, PHP est谩 dise帽ado para prevenir el tipo de ataques que esta configuraci贸n hace posible:
Acceso a archivos del sistema: http://mi.servidor/cgi-bin/php?/etc/passwd
La informaci贸n del query en una URL, la cual viene despu茅s del signo de interrogaci贸n (?), es pasada como argumentos de l铆nea de comandos al int茅rprete por la interfaz CGI. Usualmente los int茅rpretes abren y ejecutan el archivo especificado como primer argumento de la l铆nea de comandos.
Cuando es invocado como un binario CGI, PHP se reh煤sa a interpretar los argumentos de la l铆nea de comandos.
Acceso a cualquier documento web en el servidor: http://mi.servidor/cgi-bin/php/zona_secreta/doc.html
El segmento de la URL que sigue al nombre del binario de PHP, que contiene la informaci贸n sobre la ruta /zona_secreta/doc.html es usada convencionalmente para especificar el nombre de un archivo que ha de ser abierto e interpretado por el programa CGI. Usualmente, algunas directivas de configuraci贸n del servidor web (Apache: Action) son usadas para redireccionar peticiones de documentos como http://mi.servidor/zona_secreta/script.php al int茅rprete de PHP. Bajo este modelo, el servidor web revisa primero los permisos de acceso al directorio /zona_secreta, y despu茅s de eso crea la petici贸n de redireccionamiento a http://mi.servidor/cgi-bin/php/zona_secreta/script.php. Desafortunadamente, si la petici贸n se hace originalmente en esta forma, no se realizan chequeos de acceso por parte del servidor web para el archivo /zona_secreta/script.php, 煤nicamente para el archivo /cgi-bin/php. De este modo, cualquier usuario capaz de acceder a /cgi-bin/php es capaz tambi茅n de acceder a cualquier documento protegido en el servidor web.
En PHP, la configuraci贸n de tiempo de compilaci贸n --enable-force-cgi-redirect y las directivas de configuraci贸n en tiempo de ejecuci贸n doc_root y user_dir pueden ser usadas para prevenir este tipo de ataques, si el 谩rbol de documentos del servidor llegara a tener directorio alguno con restricciones de acceso. Consulte las siguientes secciones para una explicaci贸n detallada de las diferentes combinaciones.