Compartir vía


RequestValidator Clase

Definición

Define los métodos base para la validación de solicitudes personalizada.

public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
Herencia
RequestValidator

Ejemplos

En el ejemplo siguiente se muestra cómo crear un validador de solicitud personalizado que solo permite usar una cadena específica para los valores de cadena de consulta.

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

En el ejemplo siguiente se muestra cómo configurar ASP.NET para usar el validador personalizado en el archivo Web.config para una aplicación.

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

Comentarios

De forma predeterminada, ASP.NET no valida las solicitudes hasta que el código solicite explícitamente un valor de la solicitud. Por ejemplo, ASP.NET no valida los valores de cadena de consulta hasta que el código tenga acceso a la QueryString colección. De forma predeterminada, ASP.NET tampoco valida algunos tipos de datos de solicitud, como valores de formulario, cookies, nombres de archivos cargados mediante HTTP y el valor de la RawUrl propiedad .

La RequestValidator clase es una clase base que se puede implementar para proporcionar validación de solicitudes personalizadas. Al implementar esta clase, puede determinar cuándo se produce la validación y en qué tipo de datos de solicitud se va a realizar la validación.

De forma predeterminada, ASP.NET proporciona comprobaciones de scripting entre sitios (XSS). Sin embargo, puede complementar o reemplazar la lógica de validación de solicitudes que se proporciona en ASP.NET mediante la creación de una implementación personalizada de XSS. Por ejemplo, puede escribir una implementación de validación de solicitudes personalizada que examine los ataques por inyección de código SQL además de comprobar si hay ataques XSS.

Para crear la validación de solicitudes personalizadas, escriba una clase personalizada que derive de la RequestValidator clase base. A continuación, configure ASP.NET para usar el validador de solicitudes personalizado en el archivo de Web.config de nivel de aplicación. Puede colocar la clase personalizada en la carpeta App_Code, en una biblioteca de clases compilada en la carpeta Bin o en una biblioteca de clases compilada en la GAC.

Nota:

Solo se puede configurar un tipo de validación de solicitud personalizada para una aplicación. No es posible configurar un tipo de validación de solicitud diferente para rutas de acceso o páginas virtuales individuales.

Constructores

RequestValidator()

Inicializa una nueva instancia de la clase RequestValidator.

Propiedades

Current

Obtiene o establece una referencia a la instancia RequestValidator actual que se usará en una aplicación.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32)

Proporciona un método público que llama al método protegido IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) para validar los datos de la solicitud HTTP.

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

Valida una cadena que contiene los datos de la solicitud HTTP.

MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también