PHPでウェブの世界と繋がろう!
menu
ホーム > PHPセキュリティー > 9 インクルード > 9-1 インクルードファイルの扱い

9-1 インクルードファイルの扱い

Pocket

説明

データファイルの流出
アプリケーションを作る際、多くのPHPファイルで読み込むような設定ファイルを作成する場合があると思います。例えばデータベースへアクセスする認証コードが記載されたファイルなどです。そのような設定ファイルをインクルードして共通の設定内容を読み込むことは便利ですし、メンテナンス性も向上します。ですが、誤った設定ファイルの扱いにより、その内容が外部に流出することがあります。結果としてブラウザに設定ファイルのソースコードが表示されてしまします。それは以下のような場合に頻繁に発生します。

POINT

  • 設定ファイルの拡張子が .inc
  • 設定ファイルをドキュメントルート内に設置
  • apacheが.incファイルのリソース型を決められない
  • apacheのリソース型としてDefaultTypeがtext/plainになっている

これらのことが重なった結果、設定ファイルがURL経由でアクセスされ、ソースコードがブラウザに表示されることになります

設定ファイルはドキュメントルート以外に設置し、拡張子は.phpにしましょう。.incにする場合は、apacheに.incファイルをPHPとして処理させ、.incリソースへのアクセスを拒否させることでも回避できます。

POINT

  • 設定ファイルはドキュメントルートの外に格納
  • インクルードするファイルは.phpを使用する
  • apacheに.incファイルをPHPとして処理させる
  • apacheに.incリソースへのアクセスを拒否させる

<Files ~\.inc$>
Order allow,deny
Deny from all
</Files>

バックドアURL
POINT

  • バックドアURLとはURLから直接アクセスできてしまうこと

バックドアURLとは、悪意がない場合であっても、URLから直接アクセス出来てしまうリソースのことです。

例えば、アプリケーションは認証後にファイルをインクルードしてその内容を読み込むように意図していたとします。

//$authの初期値はFALSE
$auth = FALSE;
//認証 auth() が通った場合 $auth へ TRUE
$auth = auth();
//$authの確認 TRUEの場合ファイルを読み込む
if($auth){
	include_once('./person.php');
}

person.phpがドキュメントルート内にある場合、auth() の認証を通らなくても、ブラウザのURLから直接アクセスできてしまいますドキュメントルート内にあるリソースはすべてブラウザで表示可能であると考えてください。公開されてはいけないファイルは必ずドキュメントルート以外に設置しましょう。

タグ(=記事関連ワード)

日付

投稿日:2012年7月22日
最終更新日:2012年08月29日

関連記事

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

http://www.tryphp.net/phpsecurity-incfiles/trackback/