RequestValidator クラス

定義

カスタムの要求検証のための基本メソッドを定義します。Defines base methods for custom request validation.

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

次の例では、クエリ文字列の値に特定の文字列のみを使用できるようにするカスタム要求検証コントロールを作成する方法を示します。The following example shows how to create a custom request validator that allows only a specific string to be used for query-string values.

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 を構成する方法を示しています。The following example shows how to configure ASP.NET to use the custom validator in the Web.config file for an application.

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

注釈

既定では、ASP.NET は、コードが要求から値を明示的に要求するまで、要求を検証しません。By default, ASP.NET does not validate requests until code explicitly requests a value from the request. たとえば、ASP.NET は、コードがコレクションにQueryStringアクセスするまで、クエリ文字列の値を検証しません。For example, ASP.NET does not validate query-string values until code accesses the QueryString collection. 既定では、ASP.NET は、フォーム値、cookie、HTTP を使用してアップロードされたファイルの名前、 RawUrlプロパティの値など、一部の種類の要求データも検証しません。By default, ASP.NET also does not validate some types of request data, such as form values, cookies, the names of files that have been uploaded using HTTP, and the value of the RawUrl property.

RequestValidatorクラスは、カスタム要求の検証を提供するために実装できる基本クラスです。The RequestValidator class is a base class that you can implement in order to provide custom request validation. このクラスを実装することで、検証を実行するタイミングと検証を実行する要求データの種類を決定できます。By implementing this class, you can determine when validation occurs and what type of request data to perform validation on.

既定では、ASP.NET はクロスサイトスクリプティング (XSS) チェックを提供します。By default, ASP.NET provides cross-site scripting (XSS) checks. ただし、XSS のカスタム実装を作成することによって、ASP.NET に用意されている要求検証ロジックを補完したり、置き換えたりすることができます。However, you can supplement or replace the request validation logic that is provided in ASP.NET by creating a custom implementation of the XSS. たとえば、XSS 攻撃を確認するだけでなく、SQL インジェクション攻撃をスキャンするカスタム要求検証実装を作成することができます。For example, you can write a custom request validation implementation that scans for SQL injection attacks in addition to checking for XSS attacks.

カスタム要求の検証を作成するには、 RequestValidator基本クラスから派生するカスタムクラスを記述します。To create custom request validation, you write a custom class that derives from the RequestValidator base class. 次に、アプリケーションレベルの Web.config ファイルでカスタム要求検証を使用するように ASP.NET を構成します。You then configure ASP.NET to use the custom request validator in the application-level Web.config file. カスタムクラスは、App_Code フォルダー、Bin フォルダー内のコンパイル済みクラスライブラリ、または GAC 内のコンパイル済みクラスライブラリに配置できます。You can put the custom class in the App_Code folder, in a compiled class library in the Bin folder, or in a compiled class library in the GAC.

注意

アプリケーションに対して構成できるカスタム要求の検証の種類は1つだけです。Only one custom request validation type can be configured for an application. 個々の仮想パスまたはページに対して異なる要求の検証の種類を構成することはできません。It is not possible to configure a different request validation type for individual virtual paths or pages.

コンストラクター

RequestValidator()

RequestValidator クラスの新しいインスタンスを初期化します。Initializes a new instance of the RequestValidator class.

プロパティ

Current

アプリケーションで使用する現在の RequestValidator インスタンスへの参照を取得または設定します。Gets or sets a reference to the current RequestValidator instance that will be used in an application.

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

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

HTTP 要求データを検証するために、保護された IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) メソッドを呼び出すパブリック メソッドを提供します。Provides a public method that calls the protected IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) method in order to validate HTTP request data.

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

HTTP 要求データを含む文字列を検証します。Validates a string that contains HTTP request data.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

適用対象

こちらもご覧ください