web-dev-qa-db-ja.com

Apache500のステータスを404に転送する

ショートバージョン:500ステータスが与えられたときにApacheがキャッチし、代わりに404のようなものを返すようにします。これを行う方法はありますか?

より長いバージョン:これらのサーバーは私たちのものではないアプリケーションを実行しており、ホストを台無しにした場合にスローされる可能性のある500のステータスエラーのため、最近PCIコンプライアンススキャンに失敗しました。長期的には、それらを別のネットワークに移動して、PCIに準拠する必要がないようにしますが、短期的には、迅速な修正が必要であり、アプリケーションが返す500ステータスを表示しません。これが発生している両方のアプリケーションは、Apacheを介して要求を受け入れます。

これがmod_rewriteルールになることを期待/想定していますが、ステータスコードに基づいてmod_rewriteを変更する方法がわかりません。

2
William W

私が正しく理解していれば、顧客とスキャナーに通常のエラー検索ページを表示しながら、ログで500エラーステータスをキャッチしたいと思います。

一部のWebショップは、攻撃者からWebサイト上のより深刻なエラーを「隠す」ためにこれを行います。 500エラーステータスを生成するページは、DOS攻撃の適切なターゲットになる可能性があります。サイトをスキャンして500サーバーエラーを生成するページを見つけ、それらのページを叩きのめし、不正なコードを何度もトリガーして、データベースが下に溶けるのを待ちます。

ErrorDocument 500 yourerrorpage.htmlを使用してカスタムエラーページを表示できます

http://httpd.Apache.org/docs/2.2/custom-error.html

2

500エラーによるPCIスキャンの失敗?それは少し奇妙です。とにかく...

何も提供しないデフォルトのVirtualHost(すでに持っているはずです)を設定します。リクエストが行われると、404になります。

<VirtualHost *:80>
ServerName *
DocumentRoot /var/empty
</VirtualHost>
1
Michael Hampton

これは、書き換えルールよりも出力フィルターを使用して行う方が適切です。

Mod_rewriteルールは、サイドでサブリクエストを作成し、返されたものに基づいて、取得するURLを決定する必要があります。サブリクエストが成功した場合でも、コンテンツは破棄されるため、メインリクエストとしてトランザクションを繰り返す必要があります。

一方、出力フィルターは500応答をインターセプトし、それを404に変換できます。

0
200_success