none
Webフォームに入力されたクロスサイトスクリプト検出のエラーを捉える方法について RRS feed

  • 質問

  • VS2005で、Textboxを含むWebフォームを作成しました。

    ユーザーがこの項目に、スクリプトを含むような入力した場合(たとえば "aaaaa<bbbbb>cccc" )、システムから下記のようなエラーメッセージが返されます。

     

    危険な可能性のある Request.Form 値がクライアント (TextBox1="aaaaa<bbbbb>cccc") から検出されました。

     

    この場合に、このエラーをプログラム側で補足し、ユーザーを自前のエラー画面に導きたいのですが、上記のエラーの検出の仕方がわかりません。

     また、この検証を無効にする方法として

     

    構成セクションの validateRequest=false を設定することによって要求の検証を無効にできます

     

    とありますが、これもweb.configのどこに記述すべきかもわかりません。

     

    どなたかご教授お願いします

    2008年5月6日 23:53

回答

  •  Shiraishi さんからの引用

    この場合に、このエラーをプログラム側で補足し、ユーザーを自前のエラー画面に導きたいのですが、上記のエラーの検出の仕方がわかりません。

    このエラーで発生している例外は、HttpRequestValidationException クラスです。

    Application_Errorイベント内でHttpServerUtility.GetLastError メソッド で直近の例外を取得し、型を比較することで検出が可能と思われます。

    ページ単位ならPage_Errorイベントでもいいのかも。

     

     Shiraishi さんからの引用

    とありますが、これもweb.configのどこに記述すべきかもわかりません。

    web.configを使ってアプリケーションごと検証を無効にする方法ですが、以下にHttpRequestValidationException クラスから丸写しします。

    Code Snippet

    <configuration>
      <system.web>
        <pages validateRequest="false" />
      </system.web>
    </configuration>

     

     

    @PAGEディレクティブでの無効化しかしたことがないので、外してたらすみません。
    2008年5月7日 7:39

すべての返信

  •  Shiraishi さんからの引用

    この場合に、このエラーをプログラム側で補足し、ユーザーを自前のエラー画面に導きたいのですが、上記のエラーの検出の仕方がわかりません。

    このエラーで発生している例外は、HttpRequestValidationException クラスです。

    Application_Errorイベント内でHttpServerUtility.GetLastError メソッド で直近の例外を取得し、型を比較することで検出が可能と思われます。

    ページ単位ならPage_Errorイベントでもいいのかも。

     

     Shiraishi さんからの引用

    とありますが、これもweb.configのどこに記述すべきかもわかりません。

    web.configを使ってアプリケーションごと検証を無効にする方法ですが、以下にHttpRequestValidationException クラスから丸写しします。

    Code Snippet

    <configuration>
      <system.web>
        <pages validateRequest="false" />
      </system.web>
    </configuration>

     

     

    @PAGEディレクティブでの無効化しかしたことがないので、外してたらすみません。
    2008年5月7日 7:39
  • 早速の回答ありがとうございます。

     

    すべてご指摘の通りでした。

    2008年5月8日 9:28