2011-07-15 8 views
3

私は現在公開されてはいけない公開ウェブルートの下に多くのディレクトリがあるアプリを開発中です。現在のところ、ブラウズ不可能なすべてのディレクトリに、.htaccessファイルのバックロードをDeny from Allという規則で削除することで、これを行います。最近RedirectMatchと全員の拒否 - どちらが安全ですか?

私はルートにある.htaccessでに、RedirectMatchルールのリストを定義することによっても、これらのファイルは、このような404を投げて「隠す」ということを発見しかし:

RedirectMatch 404 "/uploads*" 
RedirectMatch 404 "/keys*" 
RedirectMatch 404 "/private_files*" 
.... 

に、RedirectMatch方法は他を課すん公開されているものを定義するための「中央管理された」システムへの切り替えを勧めないセキュリティ脆弱性

答えて

3

これらは同等ではありません。 RedirectMatchディレクティブはURLレベルで動作します。つまり、RedirectMatch 404 "/keys*"は、/keysで始まるURLにアクセスするのを防ぐことができますが、他の方法はURLに関係なく特定の物理ディレクトリにのみ影響します。これはバグや機能です。

また、パフォーマンスに関する懸念がある場合、サーバーが受信するすべてのリクエストに対して、のルールをメインの.htaccessに解析する必要があります。これらのディレクトリをロードしようとする試みが非常に稀であることが予想される場合、おそらく不必要なオーバーヘッドになる可能性があります。

(他の誰かが、おそらく指摘するように、最も安全なメカニズムは、それらのファイルに外の公共のドキュメントルートを移動することですが、私はいくつかのホスティングプロバイダはそう許可しないことを理解しています。)

+0

パーフェクトこれは私が探していた答えです。オーバーヘッドは実際に容易に避けることができる付随的な損傷である。別の.htaccessファイルを使用しています。ウェブルートからそれを移動することも私の最初の選択ですが、ホストはそれを許可しないため、私は別の方法を探しています。ありがとう! – ChrisR

0
<Directory /uploads> 
    Order Deny,Allow 
    Deny from all 
</Directory> 
+0

これは素晴らしい解決策ですが、残念ながら私はvhostの設定にアクセスできないので、これはどちらもいいことではありません。ありがとう! – ChrisR

+0

@ChrisR:これは '.htaccess'で行うことができ、vhostにアクセスする必要はありません! :) – Shef

+0

過去に何を試みたのか、そしてApacheのドキュメントによると、.htaccessはというコンテキストではありません。 http://httpd.apache.org/docs/current/mod/core.html#directory – ChrisR

関連する問題