QA@IT
«回答へ戻る

一部訂正。

2
 > 
 > ・・・ということだと思います。
 
-なるほどですね。
-ただ気になるのは、Global.asaxにてリダイレクトさせる場合、単純に要求のあったURL(aspxerrorpathクエリを削除しないURL)へリダイレクトさせると、リダイレクトループが発生してしまいます。
-また、別のページへリダイレクトさせようとした場合でも、aspxerrorpathクエリをつけるとリダイレクトループが発生しました。
-(クエリパラメータにこだわらず、セッションで渡せば良いのですが、気になりました。)
+なるほどですね。すっきりしました。
  
 > 問題はクエリ文字列 aspxerrorpath ではなく、脆弱性診断ツール(OWASP ZAP) が不正な ViewState を POST するということにありそうです。
 

SurferOnWww様

回答ありがとうございます。

ViewState の検証がかかる前に Response.Redirect(requestPath) で処理が中断され直ちに HTTP 302 応答と応答ヘッダの Location に requestPath を設定してブラウザに返す ⇒ ブラウザは Location の requestPath を GET 要求に行く ⇒ GET 要求なので ViewState の問題はない

・・・ということだと思います。

なるほどですね。すっきりしました。
 

問題はクエリ文字列 aspxerrorpath ではなく、脆弱性診断ツール(OWASP ZAP) が不正な ViewState を POST するということにありそうです。

あえて不正なViewStateでPostすることでエラーページを表示させて内部情報を表示させるのが目的かと思います。
ただ今回は表示されるランタイムエラーのページには、内部情報は含まれていないので良しとしようと思います。
(ただ一般的には500エラーは脆弱性扱いとなっていますが。。。)
 

想像が正しいかどうか、ViewState の検証を無効にしてみる等で確認してはいかがですか?

web.configにて、以下の様にViewStateのMAC検証しない様にし、更にViewState自体を無効としてみましたが、同様の500エラー(不正なViewState)が発生してしまいました。
htmlソースを見る限り、ViewStateを無効にしても、レスポンスには必ず"__VIEWSTATE"が含まれてしまう様です。

<pages enableViewState="false" enableViewStateMac="false" viewStateEncryptionMode="Never" />
SurferOnWww様

回答ありがとうございます。

> ViewState の検証がかかる前に Response.Redirect(requestPath) で処理が中断され直ちに HTTP 302 応答と応答ヘッダの Location に requestPath を設定してブラウザに返す ⇒ ブラウザは Location の requestPath を GET 要求に行く ⇒ GET 要求なので ViewState の問題はない
> 
> ・・・ということだと思います。

なるほどですね。すっきりしました。
 
> 問題はクエリ文字列 aspxerrorpath ではなく、脆弱性診断ツール(OWASP ZAP) が不正な ViewState を POST するということにありそうです。

あえて不正なViewStateでPostすることでエラーページを表示させて内部情報を表示させるのが目的かと思います。
ただ今回は表示されるランタイムエラーのページには、内部情報は含まれていないので良しとしようと思います。
(ただ一般的には500エラーは脆弱性扱いとなっていますが。。。)
 
> 想像が正しいかどうか、ViewState の検証を無効にしてみる等で確認してはいかがですか?

web.configにて、以下の様にViewStateのMAC検証しない様にし、更にViewState自体を無効としてみましたが、同様の500エラー(不正なViewState)が発生してしまいました。
htmlソースを見る限り、ViewStateを無効にしても、レスポンスには必ず"__VIEWSTATE"が含まれてしまう様です。

```
<pages enableViewState="false" enableViewStateMac="false" viewStateEncryptionMode="Never" />
```

回答を投稿

SurferOnWww様

回答ありがとうございます。

ViewState の検証がかかる前に Response.Redirect(requestPath) で処理が中断され直ちに HTTP 302 応答と応答ヘッダの Location に requestPath を設定してブラウザに返す ⇒ ブラウザは Location の requestPath を GET 要求に行く ⇒ GET 要求なので ViewState の問題はない

・・・ということだと思います。

なるほどですね。
ただ気になるのは、Global.asaxにてリダイレクトさせる場合、単純に要求のあったURL(aspxerrorpathクエリを削除しないURL)へリダイレクトさせると、リダイレクトループが発生してしまいます。
また、別のページへリダイレクトさせようとした場合でも、aspxerrorpathクエリをつけるとリダイレクトループが発生しました。
(クエリパラメータにこだわらず、セッションで渡せば良いのですが、気になりました。)
 

問題はクエリ文字列 aspxerrorpath ではなく、脆弱性診断ツール(OWASP ZAP) が不正な ViewState を POST するということにありそうです。

あえて不正なViewStateでPostすることでエラーページを表示させて内部情報を表示させるのが目的かと思います。
ただ今回は表示されるランタイムエラーのページには、内部情報は含まれていないので良しとしようと思います。
(ただ一般的には500エラーは脆弱性扱いとなっていますが。。。)
 

想像が正しいかどうか、ViewState の検証を無効にしてみる等で確認してはいかがですか?

web.configにて、以下の様にViewStateのMAC検証しない様にし、更にViewState自体を無効としてみましたが、同様の500エラー(不正なViewState)が発生してしまいました。
htmlソースを見る限り、ViewStateを無効にしても、レスポンスには必ず"__VIEWSTATE"が含まれてしまう様です。

<pages enableViewState="false" enableViewStateMac="false" viewStateEncryptionMode="Never" />
SurferOnWww様

回答ありがとうございます。

> ViewState の検証がかかる前に Response.Redirect(requestPath) で処理が中断され直ちに HTTP 302 応答と応答ヘッダの Location に requestPath を設定してブラウザに返す ⇒ ブラウザは Location の requestPath を GET 要求に行く ⇒ GET 要求なので ViewState の問題はない
> 
> ・・・ということだと思います。

なるほどですね。
ただ気になるのは、Global.asaxにてリダイレクトさせる場合、単純に要求のあったURL(aspxerrorpathクエリを削除しないURL)へリダイレクトさせると、リダイレクトループが発生してしまいます。
また、別のページへリダイレクトさせようとした場合でも、aspxerrorpathクエリをつけるとリダイレクトループが発生しました。
(クエリパラメータにこだわらず、セッションで渡せば良いのですが、気になりました。)
 
> 問題はクエリ文字列 aspxerrorpath ではなく、脆弱性診断ツール(OWASP ZAP) が不正な ViewState を POST するということにありそうです。

あえて不正なViewStateでPostすることでエラーページを表示させて内部情報を表示させるのが目的かと思います。
ただ今回は表示されるランタイムエラーのページには、内部情報は含まれていないので良しとしようと思います。
(ただ一般的には500エラーは脆弱性扱いとなっていますが。。。)
 
> 想像が正しいかどうか、ViewState の検証を無効にしてみる等で確認してはいかがですか?

web.configにて、以下の様にViewStateのMAC検証しない様にし、更にViewState自体を無効としてみましたが、同様の500エラー(不正なViewState)が発生してしまいました。
htmlソースを見る限り、ViewStateを無効にしても、レスポンスには必ず"__VIEWSTATE"が含まれてしまう様です。

```
<pages enableViewState="false" enableViewStateMac="false" viewStateEncryptionMode="Never" />
```