受ける可能性がある攻撃
    
     PHP を CGI バイナリとして使用するのは、PHP を
     モジュールとして(Apache のような)サーバーソフトウエアに組み込み
      たくない何らかの理由がある場合や安全な chroot と setuid 環境をス
     クリプトに提供する他の CGI ラッパーと組み合わせて PHP を使用する
     場合の設定オプションです。セットアップ時には、通常、PHP 実行バイ
     ナリを Web サーバーの cgi-bin ディレクトリにインストールします。
     CERT 勧告 » 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
      
      
       URL の PHP バイナリ名の後のパス情報の部分、つまり/secret/doc.html は、
       CGI プログラムによりオープンされて実行される
       ファイルの名前を指定するために従来より使用されています。
       http://my.host/secret/script.php
       のようなドキュメントへの要求を PHP インタプリタにリダイレクト
       するために、通常、何らかの Web サーバー設定用命令(Apache では Action)
       が使用されます。この設定により、Web サーバーは、まずディレクトリ 
       /secret へのアクセス権をチェックし、
       リダイレクト要求 http://my.host/cgi-bin/php/secret/script.php
       を生成します。残念なことに、リクエストが最初からこの形式で与え
       られた場合、Web サーバーによるアクセスチェックは、
       /secret/script.php ファイル
       ではなく、/cgi-bin/php ファイル
       に対して行われます。この手法により、/cgi-bin/php にアクセス可能なユーザーは、
       Web サーバー上の全ての保護されたドキュメントにアクセスできてし
       まいます。
      
      
       PHP では、サーバードキュメントツリーにアクセス制限付きのディレ
       クトリがある場合、コンパイル時の設定オプション 
       --enable-force-cgi-redirect および実行時の設定命令
       doc_root と
       user_dir をこの攻撃を防止す
       るために使用することができます。  これらを組み合わせたいくつか
       の手法について以下に詳細な説明を示します。