5

Webサイトの特定のディレクトリに直接アクセスされないようにするための最良の方法はどれですか?

1-.htaccess保護する各ディレクトリにファイルを作成して配置し、その中に次の行を配置します。

Deny from all

2-index.php保護する各ディレクトリにファイルを作成して配置し、その中に次のコード行のみを配置します(これにより、Webサイトのホームページにリダイレクトされます)。

<?php header("Location: http://" . $_SERVER['HTTP_HOST']); ?>

3-何か他のもの(それは何ですか?)

4

1 に答える 1

5

コメントで述べたように、最も安全な方法は、コンテンツまたはディレクトリをWebサーバーのパブリックドキュメントルートの外部に配置することです。.htaccessこれにより、.htaccessファイルが削除された場合や、サーバーでオーバーライドが許可されていない場合でも、コンテンツが提供されなくなります。

$_SERVER['DOCUMENT_ROOT']ドキュメントルートを決定するには、PHP変数をエコーするだけです。したがって、ルートが/var/www/htmlの場合、フォルダを作成でき、/var/www/protected_folderApache(または他のWebサーバー)はそのフォルダを提供しません(http.confファイルがドキュメントルートフォルダを変更するように変更されていない限り)。

フォルダがドキュメントルートにある必要がある場合は、.htaccessファイルを使用してリダイレクトするかDENY、リダイレクトすることをお勧めします。

TerryEが述べたように、OSレベルのファイル権限を使用して、Apacheユーザーによるフォルダーへのアクセスを拒否することもできます(たとえば、別のユーザーを所有者として設定し、フォルダーの権限をに設定します700)。フォルダにアクセスしようとすると、表示したくない403 Forbidden Errorが表示されます(http.confまたはでカスタム403エラーハンドラを設定できますhtaccess)。特に何をしようとしているのかによっては、このアプローチが必要になる場合があります。これにより、スクリプト(つまり、PHP)からのアクセスを防ぐこともできます。include()など)必要に応じて、PHPはデフォルトでWebサーバーユーザーの下で実行されます。このアプローチの主な欠点は、移行中にファイルのアクセス許可が保持されないことが多く(正しく行われていない場合)、再帰フラグを使用して親フォルダーのアクセス許可を変更すると、ファイルのアクセス許可が誤ってリセットされることがあることです(誰かが誤って行う可能性は低いですが)フォルダをドキュメントルートに移動します)。

于 2012-09-16T21:14:46.297 に答える