Asp.Net

ASP.NET 4 リクエストの検証

概要

ユーザー入力に <script> のような文字を入力できるために、web.config または Page ディレクティブで ValidateRequest="false" に設定すればよいでしたが、ASP.NET 4 では、セキュリティ強化するため、上記の設定が動作できなくなってます。デフォルトで、BeginRequest の前に検証を有効にしているそうです。その結果、aspx ページ要求のみでなく、ASP.NET のすべてのリソースの要求(例えば、クッキー、Web サービスやカスタム HTTP ハンドラによる要求、カスタム HTTP モジュールが読む HTTP 要求のコンテンツ)に対して検証が適用されるとのことです。

方法一

Web.configに下記のような、RequestValidationDisabled.aspxページのみ、リクエストの検証を無効に設定する

<location path="RequestValidationDisabled.aspx">
  <system.web>
    <httpRuntime requestValidationMode="2.0" />
  </system.web>
</location>

方法二

カスタマイズのRequestValidatorクラスを作成、リクエストの検証を無効にする

using System;
namespace Test
{
    class RequestValidatorDisabled : System.Web.Util.RequestValidator {
      protected override bool IsValidRequestString(System.Web.HttpContext context, string value, System.Web.Util.RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex) {
        validationFailureIndex = -1;
        return true;
      }
    }
}

Web.config 内で下記のように設定します。

<httpRuntime requestValidationType="Test.RequestValidatorDisabled" />


超多機能のアクセス解析が永久無料!

コメント:



(画像の文字列を入力して下さい)

トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019/12/02 (月) 12:47:55 (1628d)

e[NȂECir Yahoo yV LINEf[^[Ōz500~`I
z[y[W ̃NWbgJ[h COiq@COsیI COze