• ベストアンサー

設定ファイルを覗かれないようにするには?

誰でも設置できるようなフリーCGIを作っていて、ふと思ったのですが、設定ファイルを別ファイルにする場合、そのファイル名が一般に知られてしまうような場合だとincludeなどで読み込まれて設定が覗かれてしまうということはないのでしょうか。 ネットでさがしてみましたが、あまり情報がなく、自分でやってみたところ「file-access is disabled in the server configuration」と出ました。 includeなどは、絶対パスでは読み込めないのでしょうか。 また、共有サーバーなどで、相対パスで指定された場合はどうでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.2

そのサーバーにincludeするファイルを設置する権限をもっているのなら わざわざincludeしなくても、ftpなりで直接ファイルの閲覧が可能ですが・・・ ただ、今件は、自分が設置したファイルではなく、 共有サーバーで、他の人のアカウントで作ったファイルの場合に、 ftpでは他人のファイルはディレクトリ自体にアクセスできないようにされているが、httpサーバーのプロセスのアカウントでならアクセスできるので  他人からinclude()やfile()されたCGIが設置されhttpサーバーから実行されると、自分のファイルの中身が見えてしまわないか??ということを気にされているのですよね> ・・・そのユーザーでの絶対パスでのファイルの在処をしっていれば、それはあり得るかも・・・・ (VPS型の共有サーバー以外は) これとは別に、CGIの設定ファイルやログファイルをhttpアクセスで直接閲覧してしまえる問題のあるCGIがあるのは周知の通りですので、これは .htaccessを使って拡張子でのアクセス制限を行うとか、 Webアクセスできない場所に設定ファイルを置くとか、それなりに工夫してあるはずですが、 そういう安全性に対する考慮のないCGIも、あり得るでしょう。

umioyo
質問者

お礼

なるほど、やはりそうですよね。 ちなみにですが、include()やfile()で、http://から始まるファイル指定で参照することはできないような仕組みになっているのでしょうか。 include("http://~/.php"); file("http://~/.php");

umioyo
質問者

補足

間違いました^^ include("http://~/xxx.php"); file("http://~/xxx.php");

その他の回答 (2)

回答No.3

> http://から始まるファイル指定で参照することはできないような仕組みになっているのでしょうか。 http://でのアクセスはブラウザからアクセスするのと同じ通信方法ですので Webコンテンツとして公開しているファイルにしかアクセスできないので 隠しファイルや権限のないファイルにはアクセスはできませんね。

umioyo
質問者

お礼

ありがとうございました。 すっきりしました^^

  • _chihiro_
  • ベストアンサー率63% (26/41)
回答No.1

覗かれるというのは、 1)WEBを閲覧している一般ユーザーにでしょうか? 2)それとも、フリーCGIを利用するユーザーにでしょうか? 1)の場合だと、DocumentRoot以下に設定ファイルを置かなければ大丈夫。 2)の場合は、フリーCGIの配布の仕方にもよると思います。

umioyo
質問者

補足

すいません。言葉不足でした。 フリーCGIを提供すると、ファイル構成などわかってしまいますよね。 ちょっと知識がある人ならば、「あ、このCGIはあそこで配布されているのと同じものだから設定ファイルはXXX.phpのはず」と、そのファイルを読まれてしまう恐れはないのだろうかと思って質問してみました。 私の思いつく範囲だとincludeとかなのですが、その方法、もしくはその他の方法で設定ファイルを読まれてしまう恐れはないんでしょうかという質問です。 DocumentRootよりも上の階層だと環境によってファイルが読めない場合もありますよね? 配布用なので万人に使えるような形にしたいのですが。。。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう