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 양식 값, 쿠키, HTTP를 사용하여 업로드된 파일 이름 및 속성 값과 RawUrl 같은 일부 유형의 요청 데이터의 유효성을 검사하지 않습니다.

RequestValidator 클래스는 사용자 지정 요청 유효성 검사를 제공하기 위해 구현할 수 있는 기본 클래스입니다. 이 클래스를 구현하여 유효성 검사가 발생하는 시기와 유효성 검사를 수행할 요청 데이터의 유형을 확인할 수 있습니다.

기본적으로 ASP.NET XSS(교차 사이트 스크립팅) 검사를 제공합니다. 그러나 XSS의 사용자 지정 구현을 만들어 ASP.NET 제공되는 요청 유효성 검사 논리를 보완하거나 바꿀 수 있습니다. 예를 들어 XSS 공격을 확인하는 것 외에도 SQL 삽입 공격을 검사하는 사용자 지정 요청 유효성 검사 구현을 작성할 수 있습니다.

사용자 지정 요청 유효성 검사를 만들려면 기본 클래스에서 파생되는 사용자 지정 클래스를 RequestValidator 작성합니다. 애플리케이션 수준 Web.config 파일에서 사용자 지정 요청 유효성 검사기를 사용 하는 ASP.NET을 구성 합니다. 사용자 지정 클래스를 App_Code 폴더, Bin 폴더의 컴파일된 클래스 라이브러리 또는 GAC의 컴파일된 클래스 라이브러리에 배치할 수 있습니다.

참고

애플리케이션에 대 한 사용자 지정 요청 유효성 검사 유형이 하나만 구성할 수 있습니다. 개별 가상 경로 또는 페이지에 대해 다른 요청 유효성 검사 유형을 구성할 수 없습니다.

생성자

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) 메서드를 호출하는 public 메서드를 제공합니다.

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

HTTP 요청 데이터를 포함하는 문자열의 유효성을 검사합니다.

MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

적용 대상

추가 정보