Partager via


RequestValidator Classe

Définition

Définit les méthodes de base pour la validation de 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 ne demande pas explicitement une valeur de la requête. 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, comme les valeurs de formulaire, les cookies, les noms de fichiers qui ont été chargés à l’aide de 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 demande personnalisée. En implémentant cette classe, vous pouvez déterminer quand la validation se produit et le type de données de requête sur lequel 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 de requête fournie dans ASP.NET en créant une implémentation personnalisée du XSS. Par exemple, vous pouvez écrire une implémentation de validation de requête personnalisée qui analyse les attaques par injection SQL en plus de vérifier les attaques XSS.

Pour créer une validation de requête 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.

Note

Un seul type de validation de requête personnalisé peut être configuré pour une application. Il n’est pas possible de configurer un type de validation de requête différent pour des chemins d’accès virtuels ou des pages individuels.

Constructeurs

Nom Description
RequestValidator()

Initialise une nouvelle instance de la classe RequestValidator.

Propriétés

Nom Description
Current

Obtient ou définit une référence à l’instance actuelle RequestValidator qui sera utilisée dans une application.

Méthodes

Nom Description
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la 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 protégée IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) pour 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 Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

S’applique à

Voir aussi