• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Apacheで、アクセスさせたくないファイルがある)

Apacheでアクセス制限をかけたいファイルがある方法

このQ&Aのポイント
  • Apacheでアクセス制限をかけたいファイルがある場合、特定のファイルへの直接アクセスを制限する方法を探しています。
  • 質問者は、PHPで作成した「データベース接続ファイル」と「main.php」にアクセス制限をかけたいと考えています。
  • 具体的には、特定のphpファイルからのアクセスは許可し、public以下のファイルに対してのみ制限をかけたいという要件です。

質問者が選んだベストアンサー

  • ベストアンサー
  • utun01
  • ベストアンサー率40% (110/270)
回答No.1

ちょっとずれていたらお聞き流しください。 apacheの設定云々ではなく、DocumentRoot下に置かなければ良いのでは? パスワード等を含むファイルは基本的にDocumentRoot下には置かないものだと思います。 設定次第で見えなくしたとしても、どこにセキュリティホールがあるか分かりませんからね。

ShiftTail
質問者

お礼

情報ありがとうございます。 >ちょっとずれていたらお聞き流しください。 apacheの設定云々ではなく、DocumentRoot下に置かなければ良いのでは? ありがとうございます。 そのとおりだと思いました。気づきませんでした。 自分でも知らず知らずのうちに、DocumentRootに置かなくてはいけない。かつ、 パスワードファイルの機密性を守りたいと考えていたのです。 非常に参考になりました。 ありがとうございました。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

>この「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> のような処理になると思います

ShiftTail
質問者

お礼

情報ありがとうございます。 include_pathを調整する方向で以降と思います。 ご教授ありがとうございました。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

基本的には、ANo.1さんやANo.2さんが書かれたように「http経由でアクセスされない場所に置く」のがベストです。もしサーバの都合でそれが出来ないのであれば、.htaccessで(Filesディレクティブなどを使って)deny frm allするとか、そもそも拡張子を.plにしてしまうとか(includeでは何の問題もない)手法はいくらでもあります。 ただ『includeされるファイルに単独でアクセスされたらソースが見られてしまう』というのは、ちょっと考えにくい状態ですね。本当にhttp経由でアクセスして試されたのでしょうか?拡張子.phpのファイルに対してそのままテキストで返すようなサーバはあり得ないのですが・・・

ShiftTail
質問者

お礼

情報ありがとうございます。 htdocs以外の場所におく方法で考えて見ます。 phpが無効になった時に、 『includeされるファイルに単独でアクセスされたらソースが見られてしまう」ちょっとみえてしまったので そこを警戒しました。

回答No.2

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 ※動作確認はしてません

ShiftTail
質問者

お礼

情報ありがとうございます。 そのとおりだと思いました。気づいてませんでした。 自分でも知らず知らずのうちに、DocumentRootに置かなくてはいけない。かつ、 パスワードファイルの機密性を守りたいと考えていたのです。 非常に参考になりました。 ありがとうございました。

関連するQ&A