Faiblesses connues
    
     Utiliser PHP comme un exécutable CGI est une possibilité
     pour les cas où l'on ne veut pas l'utiliser comme un module
     du serveur web (comme Apache), ou bien lorsque l'on souhaite l'utiliser en
     combinaison avec un gestionnaire CGI complémentaire, afin de
     créer un environnement de script sécurisé (en utilisant
     des techniques de chroot ou setuid). Une telle décision signifie
     habituellement que vous installerez votre exécutable dans le
     répertoire cgi-bin de votre serveur web.
     » CERT CA-96.11 recommande
     de ne placer aucun interpréteur à l'intérieur du répertoire
     cgi-bin. Même si le programme PHP peut être utilisé comme
     interpréteur indépendant, PHP a été
     pensé afin de rendre impossible les attaques que ce type
     d'installation rend habituellement possible :
    
    
     - 
      
       Accès au système de fichiers :
       http://ma.machine/cgi-bin/php?/etc/passwd
      
      
       Lorsque la requête est passée dans une url, après le point
       d'interrogation (?), elle est envoyée à l'interpréteur
       comme une ligne de commande par l'interface CGI. Habituellement,
       l'interpréteur ouvre le fichier spécifié et l'exécute.
      
      
       Lorsqu'il est invoqué comme exécutable CGI, PHP refuse
       d'interpréter les arguments de la ligne de commande.
      
     
- 
      
       Accès à n'importe quel document web sur le serveur :
       http://my.host/cgi-bin/php/secret/doc.html
      
      
       Le "path information" dans l'url, situé juste après le nom
       de l'exécutable PHP, /secret/doc.html est
       utilisé par convention pour spécifier le nom du fichier
       qui doit être ouvert et interprété par le programe
       CGI. Habituellement, des directives de configuration
       du serveur web (pour le serveur Apache : Action) sont utilisées pour
       rediriger des requêtes vers des documents comme
       http://my.host/secret/script.php vers
       l'interpréteur PHP. Dans une telle configuration, le serveur web
       vérifie d'abord s'il a accès au répertoire
       /secret, et redirige ensuite la requête vers
       http://my.host/cgi-bin/php/secret/script.php.
       Malheureusement, si la requête est faite directement sous cette forme,
       aucune vérification d'accès n'est faite par le serveur web
       pour le fichier /secret/script.php,
       mais uniquement pour le fichier /cgi-bin/php.
       De cette manière, n'importe quel utilisateur qui peut accéder
       au fichier /cgi-bin/php peut aussi
       accéder à n'importe quel document protégé sur le serveur web.
      
      
       Avec PHP, les options d'exécution
       cgi.force_redirect,
       doc_root et
       user_dir peuvent être
       utilisées pour prévenir ce genre d'attaque, si des restrictions
       d'accès sont appliquées sur les documents du serveur. Voir
       ci-dessous pour des explications plus complètes sur les
       différentes combinaisons.