- ベストアンサー
Apacheでアクセス制限をかけたいファイルがある方法
- Apacheでアクセス制限をかけたいファイルがある場合、特定のファイルへの直接アクセスを制限する方法を探しています。
- 質問者は、PHPで作成した「データベース接続ファイル」と「main.php」にアクセス制限をかけたいと考えています。
- 具体的には、特定のphpファイルからのアクセスは許可し、public以下のファイルに対してのみ制限をかけたいという要件です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ちょっとずれていたらお聞き流しください。 apacheの設定云々ではなく、DocumentRoot下に置かなければ良いのでは? パスワード等を含むファイルは基本的にDocumentRoot下には置かないものだと思います。 設定次第で見えなくしたとしても、どこにセキュリティホールがあるか分かりませんからね。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
>この「http://localhost/database.php」にアクセスしソースファイルを]見ることが可能で >DBへの、接続ユーザー・パスワードがみられてしまうことが問題だと思っています。 いまいち意味がわからないのですが (1)database.phpには関数が書かれているだけなんだから database.phpにアクセスしてもソースはみえないでしょ? (2)phpの実行がキャンセルになった場合ソースが見える可能性があるので これはinclude_pathを調整すればよいかもしれません。 (3)apacheの処理としては <FilesMatch "^database\.php$"> Order allow,deny Deny from all </FilesMatch> のような処理になると思います
お礼
情報ありがとうございます。 include_pathを調整する方向で以降と思います。 ご教授ありがとうございました。
- shimix
- ベストアンサー率54% (865/1590)
基本的には、ANo.1さんやANo.2さんが書かれたように「http経由でアクセスされない場所に置く」のがベストです。もしサーバの都合でそれが出来ないのであれば、.htaccessで(Filesディレクティブなどを使って)deny frm allするとか、そもそも拡張子を.plにしてしまうとか(includeでは何の問題もない)手法はいくらでもあります。 ただ『includeされるファイルに単独でアクセスされたらソースが見られてしまう』というのは、ちょっと考えにくい状態ですね。本当にhttp経由でアクセスして試されたのでしょうか?拡張子.phpのファイルに対してそのままテキストで返すようなサーバはあり得ないのですが・・・
お礼
情報ありがとうございます。 htdocs以外の場所におく方法で考えて見ます。 phpが無効になった時に、 『includeされるファイルに単独でアクセスされたらソースが見られてしまう」ちょっとみえてしまったので そこを警戒しました。
- satomi3951
- ベストアンサー率71% (98/137)
database.phpをApacheから参照されない場所に置いておいて、 include_pathでその場所をphpからは参照できるようにしておけば? 例 /usr/local/foo/lib/database.php php.iniなら include_path=/usr/local/foo/lib .htaccessなら php_value include_path /usr/local/foo/lib ※動作確認はしてません
お礼
情報ありがとうございます。 そのとおりだと思いました。気づいてませんでした。 自分でも知らず知らずのうちに、DocumentRootに置かなくてはいけない。かつ、 パスワードファイルの機密性を守りたいと考えていたのです。 非常に参考になりました。 ありがとうございました。
お礼
情報ありがとうございます。 >ちょっとずれていたらお聞き流しください。 apacheの設定云々ではなく、DocumentRoot下に置かなければ良いのでは? ありがとうございます。 そのとおりだと思いました。気づきませんでした。 自分でも知らず知らずのうちに、DocumentRootに置かなくてはいけない。かつ、 パスワードファイルの機密性を守りたいと考えていたのです。 非常に参考になりました。 ありがとうございました。