1

主なコンポーネントがサブフォルダーに格納されているスクリプトがあります。すべてのコンポーネントは、コントローラーとして機能する index.php からのみアクセスできます。コンポーネントフォルダーをパブリックアクセス/可視性から隠す方法を考えているとき、私は2.オプションを念頭に置いていました:

  1. すべてのディレクトリで .htaccess を使用して、403 Forbidden エラーを配信します。
  2. 次の php スクリプトと「偽の」404 HTML メッセージを含む index.php をすべてのフォルダーに配置します。

    header('HTTP/1.0 404 Not Found');

両方のオプションを試し、OWASP ZAP でスキャンを行いました。最初のオプションでは、すべてのシステム フォルダに 403 が配信されたため、スクリプトの構造全体を取得できました。2 番目のオプションでは、OWASP はスクリプト フォルダーの一覧を表示できませんでした。これは、404 がフォルダーがないと通知したためです。

htaccess はすべてのアクセスをブロックしますが、偽の 404 を使用すると、ディレクトリがあることさえわかりません。

.htaccess のセキュリティと、配信された 404 の適切な難読化を実現するための回避策はありますか?

編集: サーバーの制限により、アクセス可能なスクリプト パスの外にコンポーネントを移動することはできません。

4

2 に答える 2

0

これに関しては、2 つの考え方があります。まず、@nalply が述べているように、スクリプトをドキュメント ルートから移動するだけです。PHP では、ファイルをサーバー ルートまで含めることができるため、実際のパブリック コンテンツに含める必要はありません。私の意見では、これが最善の方法です。

2 番目の方法は、.htaccessディレクティブを使用することです。たとえば、私が運営している特定のサイトでは、技術的に最初のオプションを実装できません。したがって、.htaccess次のコードを含む、一般に公開されることを意図していないディレクトリにファイルを配置します。

deny from all

これにより、ブラウザはディレクトリ内のファイルにアクセスできなくなりますが、PHP を介してこれらのファイルを含めることはできます。これは 2 番目に良い方法です。

index.phpHTTP エラー ヘッダーを送信したり、メッセージを表示したりするファイルを使用しないことを強くお勧めします。そのディレクトリ内の他のファイルには、この方法だけを使用して技術的にアクセスできます。これらのファイルのいずれかのパスを誰かが知っていれば、それらのファイルにアクセスできます。

TL;DRドキュメント ルートの非公開ディレクトリにファイルを配置する.htaccess、各ディレクトリのファイルを使用します。index.phpファイルを使用してディレクトリ アクセスをブロックしないでください。

于 2013-02-22T21:24:43.510 に答える