次の方法で共有


RequestValidator クラス

定義

カスタムの要求検証のための基本メソッドを定義します。

public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
継承
RequestValidator

次の例は、クエリ文字列値に特定の文字列のみを使用できるようにするカスタム要求検証コントロールを作成する方法を示しています。

using System;
using System.Web;
using System.Web.Util;

public class CustomRequestValidation : RequestValidator
{
    public CustomRequestValidation() { }

    protected override bool IsValidRequestString(
        HttpContext context, string value,
        RequestValidationSource requestValidationSource, string collectionKey,
        out int validationFailureIndex)
      {
        validationFailureIndex = -1;  //Set a default value for the out parameter.

        //This application does not use RawUrl directly so you can ignore the check.
        if (requestValidationSource == RequestValidationSource.RawUrl)
            return true;

        //Allow the query-string key data to have a value that is formatted like XML.
        if ((requestValidationSource == RequestValidationSource.QueryString) &&
            (collectionKey == "data"))
        {
            //The querystring value "<example>1234</example>" is allowed.
            if (value == "<example>1234</example>")
            {
                validationFailureIndex = -1;
                return true;
            }
            else
                //Leave any further checks to ASP.NET.
                return base.IsValidRequestString(context, value,
                requestValidationSource,
                collectionKey, out validationFailureIndex);
        }
        //All other HTTP input checks are left to the base ASP.NET implementation.
        else
        {
            return base.IsValidRequestString(context, value, requestValidationSource,
                                             collectionKey, out validationFailureIndex);
        }
    }
}
Imports System.Web
Imports System.Web.Util

Public Class CustomRequestValidation
    Inherits RequestValidator

    Public Sub New()
    End Sub

    Protected Overloads Overrides Function IsValidRequestString(ByVal context As HttpContext, ByVal value As String, _
            ByVal requestValidationSource__1 As RequestValidationSource, _
            ByVal collectionKey As String, _
            ByRef validationFailureIndex As Integer) As Boolean
        validationFailureIndex = -1 ' Set a default value for the out parameter.

        ' This application does not use RawUrl directly so you can ignore the check.
        If requestValidationSource__1 = RequestValidationSource.RawUrl Then
            Return True
        End If

        ' Allow the query-string key data to have a value that is formated like XML.
        If (requestValidationSource__1 = RequestValidationSource.QueryString) AndAlso (collectionKey = "data") Then

            ' The query-string value "<example>1234</example>" is allowed.
            If value = "<example>1234</example>" Then
                validationFailureIndex = -1
                Return True
            Else
                ' Leave any further checks to ASP.NET.
                Return MyBase.IsValidRequestString(context, value,
                     requestValidationSource__1, collectionKey,
                     validationFailureIndex)
            End If
        Else
            ' All other HTTP input checks are left to the base ASP.NET implementation.
            Return MyBase.IsValidRequestString(context, value, requestValidationSource__1, collectionKey, validationFailureIndex)
        End If
    End Function
End Class

次の例は、アプリケーションのWeb.config ファイルでカスタム検証コントロールを使用するように ASP.NET を構成する方法を示しています。

<system.web>  
  <httpRuntime requestValidationType="CustomRequestValidation" />  
</system.web>  

注釈

既定では、コードが要求から値を明示的に要求するまで、ASP.NET は要求を検証しません。 たとえば、ASP.NET は、コードがコレクションにアクセスするまで、クエリ文字列値を QueryString 検証しません。 既定では、ASP.NET では、フォーム値、Cookie、HTTP を使用してアップロードされたファイルの名前、プロパティの値など、一部の種類の RawUrl 要求データも検証されません。

クラスは RequestValidator 、カスタム要求の検証を提供するために実装できる基本クラスです。 このクラスを実装することで、検証が発生するタイミングと、検証を実行する要求データの種類を判断できます。

既定では、ASP.NET はクロスサイト スクリプティング (XSS) チェックを提供します。 ただし、XSS のカスタム実装を作成することで、ASP.NET で提供される要求検証ロジックを補完または置き換えることができます。 たとえば、XSS 攻撃のチェックに加えて、SQL インジェクション攻撃をスキャンするカスタム要求検証実装を記述できます。

カスタム要求の検証を作成するには、基底クラスから派生するカスタム クラスを RequestValidator 作成します。 次に、アプリケーション レベルのWeb.config ファイルでカスタム要求検証コントロールを使用するように ASP.NET を構成します。 カスタム クラスは、App_Code フォルダー、Bin フォルダーのコンパイル済みクラス ライブラリ、または GAC のコンパイル済みクラス ライブラリに配置できます。

注意

アプリケーションに対して構成できるカスタム要求の検証の種類は 1 つだけです。 個々の仮想パスまたはページに対して異なる要求検証の種類を構成することはできません。

コンストラクター

RequestValidator()

RequestValidator クラスの新しいインスタンスを初期化します。

プロパティ

Current

アプリケーションで使用する現在の RequestValidator インスタンスへの参照を取得または設定します。

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32)

HTTP 要求データを検証するために、保護された IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) メソッドを呼び出すパブリック メソッドを提供します。

IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32)

HTTP 要求データを含む文字列を検証します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

適用対象

こちらもご覧ください