RequestValidator Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Définit les méthodes de base pour la validation de la requête personnalisée.
public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
- Héritage
-
RequestValidator
Exemples
L’exemple suivant montre comment créer un validateur de requête personnalisé qui autorise uniquement l’utilisation d’une chaîne spécifique pour les valeurs de chaîne de requête.
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
L’exemple suivant montre comment configurer ASP.NET pour utiliser le validateur personnalisé dans le fichier Web.config d’une application.
<system.web>
<httpRuntime requestValidationType="CustomRequestValidation" />
</system.web>
Remarques
Par défaut, ASP.NET ne valide pas les demandes tant que le code n’a pas explicitement demandé une valeur à la demande. Par exemple, ASP.NET ne valide pas les valeurs de chaîne de requête tant que le code n’accède pas à la QueryString collection. Par défaut, ASP.NET ne valide pas non plus certains types de données de requête, tels que les valeurs de formulaire, les cookies, les noms des fichiers qui ont été chargés à l’aide du protocole HTTP et la valeur de la RawUrl propriété .
La RequestValidator classe est une classe de base que vous pouvez implémenter pour fournir une validation de requête personnalisée. En implémentant cette classe, vous pouvez déterminer quand la validation se produit et sur quel type de données de requête effectuer la validation.
Par défaut, ASP.NET fournit des vérifications de script intersites (XSS). Toutefois, vous pouvez compléter ou remplacer la logique de validation des demandes fournie dans ASP.NET en créant une implémentation personnalisée de XSS. Par exemple, vous pouvez écrire une implémentation de validation de requête personnalisée qui analyse les attaques par injection de code SQL en plus de la vérification des attaques XSS.
Pour créer une validation de demande personnalisée, vous écrivez une classe personnalisée qui dérive de la RequestValidator classe de base. Vous configurez ensuite ASP.NET pour utiliser le validateur de requête personnalisé dans le fichier de Web.config au niveau de l’application. Vous pouvez placer la classe personnalisée dans le dossier App_Code, dans une bibliothèque de classes compilée dans le dossier Bin ou dans une bibliothèque de classes compilée dans le GAC.
Notes
Un seul type de validation de demande personnalisée peut être configuré pour une application. Il n’est pas possible de configurer un autre type de validation de demande pour des chemins ou des pages virtuelles individuels.
Constructeurs
RequestValidator() |
Initialise une nouvelle instance de la classe RequestValidator. |
Propriétés
Current |
Obtient ou définit une référence à l'instance de RequestValidator actuelle qui sera utilisée dans une application. |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Fournit une méthode publique qui appelle la méthode IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) protégée afin de valider les données de requête HTTP. |
IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Valide une chaîne qui contient des données de requête HTTP. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |