RequestValidator Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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) |