web-dev-qa-db-ja.com

URL「WEB-INF./web.xml」のasp.netエラーページを置き換えるためのわかりやすいエラーページを取得するにはどうすればよいですか?

このURLは、pciコンプライアンススキャンの一部であり、返された非常にまばらなasp.netエラーページにフラグを立てています。これは、ライブサイトでは500ステータスコードとテキストです。

'/'アプリケーションのサーバーエラー。

ランタイムエラー

説明:リクエストの処理中に例外が発生しました。さらに、最初の例外のカスタムエラーページの実行中に別の例外が発生しました。リクエストは終了しました。

ただし、Visual Studioでサイトを実行すると、404とテキストが表示されます。

'/'アプリケーションのサーバーエラー。

リソースが見つかりません。

説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。

要求されたURL:/WEB-INF./web.xml

バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.18044

ルーティングでそのURLを無視し、それを404ルート/error/not-foundにマッピングしようとしましたが、デフォルトで/error/internalにリダイレクトされるカスタムエラーが発生します。また、locationタグを使用してアクセスを拒否し、リクエストフィルタリングでブロックし、そのパスでハンドラーを使用してリクエストをキャッチしようとしました。

この書き直しを試し、同じルールのブロックとリダイレクトも試しましたが、それでも同じasp.netエラーページが表示されます。画像は切り取られますが、ルールは^.*\./.*$であり、フィルタリングしようとしているURLと一致します(単にWEB-INFも試しました)。

rewrite rule

このURLを取得してカスタムエラーページを表示する方法はありますか?

2
quentin-starin

Web.configのhttpRuntimeノードにrelaxedUrlToFileSystemMapping="true"を追加すると、このURLがASP.NetMVCによって期待どおりに処理されるようになりました。

<system.web>
  <httpRuntime relaxedUrlToFileSystemMapping="true" />
</system.web>
1
quentin-starin

IISでは、デフォルトで詳細なエラーメッセージがローカルクライアントに表示されます。そのため、Visual Studioを介してこれらのメッセージを表示できますが、リモートで500エラーが発生します。

変更するには、IIS Managerで影響を受けるサイトをクリックし、機能ビューで[エラーページ]をクリックして、右側のウィンドウで[機能設定の編集]を選択します。次に、 「カスタムエラーページ」を選択して、このように構成することができます。

編集:Tomcatには脆弱性もあります:

<servlet-mapping> 
<servlet-name>FileServlet</servlet-name> 
<url-pattern>/</url-pattern> 
</servlet-mapping> 

これをweb.xmlファイルで見つけて、コメントアウトします。これにより、誰かが/WEB-INF./にアクセスしてファイルにアクセスするのを防ぐことができます。/WEB-INF /は適切な404を投げる必要があることに注意してください。

0
Nathan C