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

以下示例演示如何将 ASP.NET 配置为使用应用程序的 Web.config 文件中的自定义验证程序。

<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 自定义类。 然后,将 ASP.NET 配置为在应用程序级别Web.config文件中使用自定义请求验证程序。 可以将自定义类放在 App_Code 文件夹中、Bin 文件夹中的已编译类库或 GAC 的已编译类库中。

注意

只能为应用程序配置一个自定义请求验证类型。 无法为单个虚拟路径或页面配置不同的请求验证类型。

构造函数

RequestValidator()

初始化 RequestValidator 类的新实例。

属性

Current

获取或设置对将在应用程序中使用的当前 RequestValidator 实例的引用。

方法

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32)

提供一种公共方法,其调用受保护的 IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) 方法来验证 HTTP 请求数据。

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

验证包含 HTTP 请求数据的字符串。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅