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
エラー メッセージ:
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() ...
解決策:
<httpRuntime ... requestValidationMode="2.0"/>
<page ... validateRequest="false"/>
<%@ Page ... ValidateRequest="true" %>
エラー メッセージ:
要求された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)
解決策:
<httpRuntime ... requestPathInvalidCharacters="<,>,*,%,&,:,\,?"/>次に、このリストから特定の文字を除外します。
エラー メッセージ:
要求された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)
解決策:
エラー メッセージ:
要求のクエリ文字列の長さが事前定義済みの値を超えると、次のエラーが表示されます。
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)
解決策:
エラー メッセージ:
要求された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)
解決策: