<< PEAR:XML_Parser | main | レコボットもどき >>

2007.02.20 Tuesday

データファイル保護

PHPで本格的にプログラミングをする場合、
(他の言語でも同じですが)
共通部分を一つのファイルにまとめておいて、
PHPファイルからそのファイルをインクルードする、
というのが一般的だと思います。

ただ、何もせずに、データファイルを作成すると、データファイル漏洩の危機が待っています。
きっちり、対応しておきましょう。

例えば、適当なディレクトリに何か書いたテキストファイルを置いてみて、
そのファイルのアドレスにWebブラウザからアクセスしてみてください。
そういうことです。

--
まず、.htaccessが使えないレンタルサーバーでは、漏洩しては困るファイルの属性をオーナー限定にしておきましょう。
これだけでも、ある程度の対策にはなります。

.htaccessが使用できる場合は、きめ細かい制御が出来ます。

特定ファイル(拡張子)へのアクセスを禁止する場合、
例えば、.inc,.datへのアクセスを禁止する場合は、
<Files ~ "\.(dat|inc)$">
deny from all
</Files>

を.htaccessに追加しておくことで、.inc,.datへのアクセスを禁止できます。
このように記述しても、PHPやCGIからはデータファイルへのアクセスは可能なので、ご安心を。
フリー素材のPHPやCGIを使う場合は、データファイルが意外と無防備になるので、データファイルを調べ、拡張子を追加しておいた方がベターです。
特にアクセスログは重要なので、お忘れなく。

もうひとつ、インクルードパスの設定
例えば、/home/username/public_html/fuga/以下にPHPで使用するデータファイルを配置する場合、
php_value include_path "/home/username/public_html/fuga"

を.htaccessに追加しておくことで、
PHPファイルでは、
require_once 'filename.inc';

と記述すれば、そのデータファイルをPHPプログラムで利用できます。
また、インクルードパスを設定しておくことで、配置場所の特定も簡単には出来ません。
こうしておけば、仮に、レンタルサーバーの不具合などで、PHPのソースプログラムが流出しても、データファイル名の流出までで済みます。
もっとも、.htaccessの制御が付かないような状態にまでなってしまったら、どうしようもないんですけどね。
その場合は、Webサーバー自体へのアクセスが出来ないことに期待するしかないのかな。

最後に一つ、
データファイル名やインクルードディレクトリは、よく使う名称は避けた方が無難です。
例えば、名前の前後に自分だけが分かる識別子を付けるなどして、出来る限り、ユニークな名称を付けるようにした方が、解析されにくくなります。

あと、PEARなど共通ライブラリなどは、そのままの名称でいいんですが、決してそこと同じディレクトリに、個人的なデータファイルを置いたりしないことが重要です。
推測しやすくなっちゃいますからね。

出来る限りの防衛はしておきましょう。

それと、IPA ISEC セキュア・プログラミング講座
は、必ず押さえておきましょう。

テクノラティお気に入りに追加する

Comments

コメント入力は停止しています

海外からと思われるコメントスパムが横行しているため、全記事のコメント入力を停止しています。メッセージのある方は、ホームページの一番下に連絡欄がありますので、そちらからお願いします。

Trackback URL

トラックバックする場合は、
トラックバック元の記事にこのエントリへのリンクを記載してください
このエントリのタイトル「データファイル保護」
このエントリのリンク「http://kommy.s254.xrea.com/blog/log/eid10.html」

Trackbacks

Hypertext Preprocessor スクリプトとは思えぬほどのC風味。文法はほぼC。 プログラミング言語 PHP: Hypertext Preprocessor インクルード インクルードパスの追加 .htaccessで 制御文 if 変数 変数に値が定義されているか? 値を破棄する 変数の値を確認 ...