ASP.NET要求の検証エラー


説明

ASP.NETは、ASP.NETのWebサイトを悪意を持つ可能性のあるユーザーの要求から保護するために、様々なアルゴリズムを実装しています。例えば、XSS攻撃に使用される可能性がある文字が含まれる要求や、不審な長さのパスが含まれる要求を拒否するなどです。

SitecoreのWebサイトが悪意をもつ可能性のある要求を受けた場合、様々なエラーがWebサイトの訪問者に向けて表示されたり、Sitecoreのログ ファイルに出力されたりする可能性があります。

しかし特定の状況では、このような要求の検証の実施により、通常のページが予想通り読み込まれない可能性があります。本記事は、ASP.NET要求の検証が原因となる様々なエラーの詳細およびその分析と適切な対応方法について説明します。

要求の検証に関する詳細情報につきましては、以下のMSDN記事をご参照ください:
http://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx

シナリオ1

エラー メッセージ:

Webサイトの訪問者がHTMLマークアップとして扱えるフォームの値を送信すると、次のエラーがログに出力されたり、ユーザーに表示されたりする可能性があります(Sitecore 7.1 Update-2以降):

ERROR A potentially dangerous Request.Form value was detected from the client (...).
Exception: System.Web.HttpRequestValidationException
Message: A potentially dangerous Request.Form value was detected from the client (...).
Source: System.Web
   at System.Web.HttpRequest.ValidateString(String value, String collectionKey, RequestValidationSource requestCollection)
   at System.Web.HttpRequest.ValidateNameValueCollection(NameValueCollection nvc, RequestValidationSource requestCollection)
   at System.Web.HttpRequest.get_Form()
   ...

解決策:

シナリオ2

エラー メッセージ:

要求されたURLに不正な文字が含まれている場合、次のエラーが表示される可能性があります。

ERROR Application error.
Exception: System.Web.HttpException
Message: A potentially dangerous Request.Path value was detected from the client (&).
Source: System.Web
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

解決策:

シナリオ3

エラー メッセージ:

要求されたURLの長さが事前定義済みの値を超える場合、以下のエラーが表示される可能性があります。

ERROR Application error.
Exception: System.Web.HttpException
Message: The length of the URL for this request exceeds the configured maxUrlLength value.
Source: System.Web
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

解決策:

シナリオ4

エラー メッセージ:

要求のクエリ文字列の長さが事前定義済みの値を超えると、次のエラーが表示されます。

ERROR Application 
Exception: System.Web.HttpException
Message: The length of the query string for this request exceeds the configured maxQueryStringLength value.
Source: System.Web
at System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

解決策:

シナリオ5

エラー メッセージ:

要求されたURLのパスが有効なWindowsのファイル パスのルールに一致しない場合、次のエラーが表示される可能性があります:

ERROR Application error.
Exception: System.Web.HttpException
Message: 
Source: System.Web
at System.Web.CachedPathData.ValidatePath(String physicalPath)
at System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

解決策: