Webアプリケーションにおいて、「各種設定ファイル(config.php的なもの)をドキュメントルートの下に置くことはセキュリティ上好ましくない」とよく言われますが、通常であればhttpでconfig.phpに直接アクセスしたところで、ファイルの内容は表示されません。具体的に、どのようなセキュリティリスクがあるのでしょうか。わたしが思いつくのは以下のとおりですが、他にもあれば教えてください。

1. Apache側でついうっかりphp拡張子の設定を消してしまう
2. 開発者が同じ場所にconfig.php.bakなどのファイルを作成してしまいそのままアップされる

回答の条件
  • 1人1回まで
  • 登録:2009/08/25 16:39:18
  • 終了:2009/08/25 21:13:14

ベストアンサー

id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262009/08/25 18:04:51

ポイント30pt

config.phpみたいにそれ自体がプログラムになっててブラウザへの出力が空なら問題はないでしょう。


ですが、設定やデータをCSVやXMLやその他ファイルなどそのままブラウザでダウンロード出来てしまう場合はやはりドキュメントルート外に置かないとまずいですよね。

質問者さんが疑問に思ったように設定がphpなら大丈夫と、分かってる人がそうするのは良いのですが、詳しくない人ではその判断が出来ないことがままあります。

なので、詳しくない人に細かいことを言っても理解して貰えないので「設定やデータはドキュメントルートの外に置いた方がよい」という安全面に倒したスローガンとしての意味合いも大きいと思います。


また、通常はないと思いますが万が一を考えると、設定がphpだから大丈夫と思っていたら何らかの要因でWEBサーバのphp設定が無効になってしまった場合に直接アクセスによってダウンロード出来てしまうというリスクは排除出来ないので、そこまで考えるのであればやはりドキュメントルート外に置くべきだと思います。


結構、含蓄のある言葉ですよね。

id:Knoa

自分の知らない、「けっこう起きうるセキュリティリスク」があったらいやだなーと思って質問しましたが、やはり「何らかの要因」がない限り、通常は特に問題なしということですね。

もちろんリスクは減らせるだけ減らすに越したことはないと思いますが、phpが無効になるような事態が起きれば、config.phpが覗かれようと覗かれまいと五十歩百歩である気もします。

2009/08/25 18:22:14

その他の回答(4件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/08/25 17:30:36

ポイント5pt

もしJavaScriptが実行できてしまうようなクロスサイト・スクリプティング脆弱性があった場合、Ajaxを利用して、生スクリプトのままダウンロードできてしまうというリスクがあります。⇒(参考)サーバー上のテキストファイルを読み込みページ上に表示する

id:Knoa

Ajax(結局はブラウザ)からconfig.phpにアクセスしても、ダウンロードできるのはApacheがphpとして実行した結果の空白HTMLファイルになるのではないでしょうか?

2009/08/25 17:44:11
id:y-kawaz No.2

y-kawaz回答回数1421ベストアンサー獲得回数2262009/08/25 18:04:51ここでベストアンサー

ポイント30pt

config.phpみたいにそれ自体がプログラムになっててブラウザへの出力が空なら問題はないでしょう。


ですが、設定やデータをCSVやXMLやその他ファイルなどそのままブラウザでダウンロード出来てしまう場合はやはりドキュメントルート外に置かないとまずいですよね。

質問者さんが疑問に思ったように設定がphpなら大丈夫と、分かってる人がそうするのは良いのですが、詳しくない人ではその判断が出来ないことがままあります。

なので、詳しくない人に細かいことを言っても理解して貰えないので「設定やデータはドキュメントルートの外に置いた方がよい」という安全面に倒したスローガンとしての意味合いも大きいと思います。


また、通常はないと思いますが万が一を考えると、設定がphpだから大丈夫と思っていたら何らかの要因でWEBサーバのphp設定が無効になってしまった場合に直接アクセスによってダウンロード出来てしまうというリスクは排除出来ないので、そこまで考えるのであればやはりドキュメントルート外に置くべきだと思います。


結構、含蓄のある言葉ですよね。

id:Knoa

自分の知らない、「けっこう起きうるセキュリティリスク」があったらいやだなーと思って質問しましたが、やはり「何らかの要因」がない限り、通常は特に問題なしということですね。

もちろんリスクは減らせるだけ減らすに越したことはないと思いますが、phpが無効になるような事態が起きれば、config.phpが覗かれようと覗かれまいと五十歩百歩である気もします。

2009/08/25 18:22:14
id:midohaji No.3

緑一回答回数12ベストアンサー獲得回数22009/08/25 19:56:20

ポイント30pt

ドキュメントルートというよりは、外部からパスが予測できる場所に置くのは危険かもしれません。

同サーバ上で、ファイルを読み込んでメール送信する、画面表示する、といった別のスクリプトにセキュリティーホールがあった場合、

.../sendmail.php?file=/var/www/.../config.php

.../sendmail.php?file=/var/www/.../conf.php

等と言った風に予測できる範囲で総当りで引数を与えて送信、表示することが出来ます。

id:Knoa

そのセキュリティホールがあること自体かなりアレだと思いますが、確かにひとつの可能性ですね。

Apache関連ではないという点で新しい視点です。

2009/08/25 20:55:12
id:kn1967a No.4

kn1967a回答回数356ベストアンサー獲得回数72009/08/25 20:01:58

ポイント5pt

直接実行されると、エラーから内容が類推できるため。

id:Knoa

直接実行しても、一般的には特にエラーは出ないと思いますが…。

2009/08/25 20:56:00
id:yofucasi No.5

yofucasi回答回数102ベストアンサー獲得回数32009/08/25 20:47:22

ポイント30pt

単に常套句の1種です。

どうでもいいことをさも重要なことに言ってるだけです。

確かに好ましくないですが、オープンソースのものではそんなのはたくさんあります。

うちはプロなのでそんなことをしませんという宣伝文句かもしれません。

あまりITに詳しくない人からみて、さもそうであるかのように写るので、説明するには

わかりやすいのでしょう。

id:Knoa

過激派のご意見ですね(笑)。

幅広い意見が集まっておもしろいです。

2009/08/25 20:57:27
  • id:koujirou6218
    Knoa様の、言うように通常でれば拡張子がphpを持つファイルはPHPで実行されファイルの生の内容を、直接には、読み取ることはできない仕組みになっていますが、なんらかの方法でこのファイルを読み取られてしまうとDBのパスワードやIDがダダ漏れになってしまいます。
    つまり、未知の脆弱性や脅威に対処しているということですね。
  • id:Knoa
    その「なんらかの方法」の具体例が知りたいのですが、基本的には、現在ではなく、将来発生するかもしれない「未知の脆弱性や脅威(Apacheを混乱させるような攻撃とか)」への対応ということですかね。
  • id:Knoa
    反応していただいたみなさま、ありがとうございました。
    ポイント配分には差を付けさせていただきましたが、わたしの勘違いなどがあればごめんなさい。

    もし「まだあるぞ!」という方がいらっしゃいましたら、このコメント欄をどしどしご活用いただければうれしいです!

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません