RequestValidator Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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) |