Compartilhar via


RequestValidator Classe

Definição

Define métodos base para a validação de solicitação personalizada.

public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
Herança
RequestValidator

Exemplos

O exemplo a seguir mostra como criar um validador de solicitação personalizado que permite que apenas uma cadeia de caracteres específica seja usada para valores de cadeia de caracteres 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

O exemplo a seguir mostra como configurar ASP.NET para usar o validador personalizado no arquivo Web.config para um aplicativo.

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

Comentários

Por padrão, ASP.NET não valida as solicitações até que o código solicite explicitamente um valor da solicitação. Por exemplo, ASP.NET não valida valores de cadeia de caracteres de consulta até que o código acesse a QueryString coleção. Por padrão, ASP.NET também não valida alguns tipos de dados de solicitação, como valores de formulário, cookies, nomes de arquivos que foram carregados usando HTTP e o valor da RawUrl propriedade.

A RequestValidator classe é uma classe base que você pode implementar para fornecer validação de solicitação personalizada. Ao implementar essa classe, você pode determinar quando ocorre a validação e em que tipo de dados de solicitação executar a validação.

Por padrão, ASP.NET fornece verificações de XSS (script entre sites). No entanto, você pode complementar ou substituir a lógica de validação de solicitação fornecida em ASP.NET criando uma implementação personalizada do XSS. Por exemplo, você pode escrever uma implementação de validação de solicitação personalizada que verifica SQL ataques de injeção, além de verificar se há ataques XSS.

Para criar a validação de solicitação personalizada, você escreve uma classe personalizada derivada da RequestValidator classe base. Em seguida, configure ASP.NET para usar o validador de solicitação personalizado no arquivo Web.config no nível do aplicativo. Você pode colocar a classe personalizada na pasta App_Code, em uma biblioteca de classes compilada na pasta Bin ou em uma biblioteca de classes compilada no GAC.

Observação

Somente um tipo de validação de solicitação personalizada pode ser configurado para um aplicativo. Não é possível configurar um tipo de validação de solicitação diferente para caminhos ou páginas virtuais individuais.

Construtores

RequestValidator()

Inicializa uma nova instância da classe RequestValidator.

Propriedades

Current

Obtém ou define uma referência à instância de RequestValidator atual que será usada em um aplicativo.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

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

Fornece um método público que chama o método IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) protegido para validar dados de solicitação HTTP.

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

Valida uma cadeia de caracteres que contém dados de solicitação HTTP.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também