konekto Inc with PHP , MySQL コネクト株式会社 技術情報コンテンツ


セキュリティ指針

PHPスクリプトの露呈

説明

PHPスクリプトの露呈とは、ライブラリファイルや設定ファイル、テンプレートファイルの拡張子をPHP以外としている場合、もしくはWebサーバのバグや設定の問題によってコンテンツではなくPHPスクリプトそのものが外部に流出してしまう問題を指す。

被害例

以下のような配置で、PHPを公開してるサイトがあるとする。

DOCROOT-(file)index.php
       |-(dir)lib
       | |-funcstions.lib
       |
       |-(dir)template
       | |-index.tpl

上記のようなサイトでは、http://exsample.com/lib/functions.libにアクセスした場合に、functions.libが漏洩する。同じようにindex.tplもダウンロードできてしまう。 また、仮に拡張子をPHPに変更した場合でもtplファイル等でエラーメッセージが表示される等でスクリプトの内容が類推される可能性がある。

これが、DBのパスワード等を収めたファイルであった場合は、DBのパスワードが外部に漏洩してしまうなどの危険がある。

上記対策

直接実行されるファイル以外は、すべてWeb公開範囲外に配置する必要がある。 上記例でいえばindex.php以外のコードをDocument Root外に配置することで対策可能である。

DOCROOT-(file)index.php

LIB_DIR|-(dir)lib
       | |-funcstions.lib
       |
       |-(dir)template
       | |-index.tpl

この場合index.phpには可能な限りコードを記述しないことが望ましい。なぜならば、外部にPHPファイルが洩れてしまった場合には、PHPコードに記述されたコード分だけ情報が流出したということになるからだ。

  • index.php
    <?php
      defaine(BASE_DIR, '/usr/local/php_code');
      defaine(LIB_DIR,  BASE_DIR . '/lib');
      require(LIB_DIR, 'main.inc'); 
    ?> 

Webサーバの設定によっては、一定の拡張子にアクセス権を与えない等の設定を行うことも可能だが、設定のもれやミスがあることを考えると上記のようなディレクトリ配置にて対応するほうがミスする可能性が減り、また失敗したときも被害を最小限にすることになるので、可能な限り公開ディレクトリにスクリプトを置かないことを推奨する。


最終更新のRSS