RequestValidator Classe

Definição

Define métodos base para validação de pedidos personalizados.

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

Exemplos

O exemplo seguinte mostra como criar um validador de pedidos personalizado que permita usar apenas uma string específica para valores de sequência 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 seguinte mostra como configurar ASP.NET para usar o validador personalizado no ficheiro Web.config para uma aplicação.

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

Observações

Por defeito, o ASP.NET não valida pedidos até que o código solicite explicitamente um valor do pedido. Por exemplo, ASP.NET não valida os valores das sequências de consulta até que o código aceda à coleção QueryString. Por defeito, ASP.NET também não valida alguns tipos de dados de pedido, como valores de formulários, cookies, nomes de ficheiros carregados usando HTTP e o valor da propriedade RawUrl.

A RequestValidator classe é uma classe base que pode implementar para fornecer validação personalizada de pedidos. Ao implementar esta classe, pode determinar quando ocorre a validação e que tipo de dados de pedido deve realizar.

Por defeito, o ASP.NET fornece verificações de scripting cross-site (XSS). No entanto, pode complementar ou substituir a lógica de validação de pedidos fornecida no ASP.NET criando uma implementação personalizada do XSS. Por exemplo, pode escrever uma implementação personalizada de validação de pedidos que analise ataques de injeção SQL além de verificar ataques XSS.

Para criar validação personalizada de pedidos, escreve-se uma classe personalizada que deriva da RequestValidator classe base. Depois, configura ASP.NET para usar o validador de pedidos personalizado no ficheiro de Web.config ao nível da aplicação. Podes colocar a classe personalizada na pasta App_Code, numa biblioteca de classes compilada na pasta Bin, ou numa biblioteca de classes compiladas no GAC.

Note

Apenas um tipo personalizado de validação de pedido pode ser configurado para uma aplicação. Não é possível configurar um tipo diferente de validação de pedido para caminhos virtuais ou páginas individuais.

Construtores

Name Description
RequestValidator()

Inicializa uma nova instância da RequestValidator classe.

Propriedades

Name Description
Current

Obtém ou define uma referência para a instância atual RequestValidator que será usada numa aplicação.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(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 protegido IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) para validar dados de pedidos HTTP.

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

Valida uma cadeia que contém dados de pedido HTTP.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também