Condividi tramite


RequestValidator Classe

Definizione

Definisce i metodi base per la convalida delle richieste personalizzata.

public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
Ereditarietà
RequestValidator

Esempio

Nell'esempio seguente viene illustrato come creare un validator di richiesta personalizzato che consente di usare solo una stringa specifica per i valori di stringa di query.

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

Nell'esempio seguente viene illustrato come configurare ASP.NET per usare il validator personalizzato nel file Web.config per un'applicazione.

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

Commenti

Per impostazione predefinita, ASP.NET non convalida le richieste finché il codice non richiede esplicitamente un valore dalla richiesta. Ad esempio, ASP.NET non convalida i valori della stringa di query finché il codice non accede alla QueryString raccolta. Per impostazione predefinita, ASP.NET non convalida anche alcuni tipi di dati di richiesta, ad esempio valori di modulo, cookie, nomi di file caricati tramite HTTP e il valore della RawUrl proprietà.

La RequestValidator classe è una classe di base che è possibile implementare per fornire la convalida della richiesta personalizzata. Implementando questa classe, è possibile determinare quando si verifica la convalida e il tipo di dati della richiesta su cui eseguire la convalida.

Per impostazione predefinita, ASP.NET fornisce controlli XSS (cross-site scripting). È tuttavia possibile integrare o sostituire la logica di convalida della richiesta fornita in ASP.NET creando un'implementazione personalizzata del servizio XSS. Ad esempio, è possibile scrivere un'implementazione di convalida della richiesta personalizzata che esegue l'analisi degli attacchi SQL injection oltre al controllo degli attacchi XSS.

Per creare la convalida della richiesta personalizzata, si scrive una classe personalizzata che deriva dalla RequestValidator classe di base. Si configura quindi ASP.NET per usare il validator di richiesta personalizzato nel file di Web.config a livello di applicazione. È possibile inserire la classe personalizzata nella cartella App_Code, in una libreria di classi compilata nella cartella Bin o in una libreria di classi compilata nella gaC.

Nota

È possibile configurare un solo tipo di convalida della richiesta personalizzata per un'applicazione. Non è possibile configurare un tipo di convalida di richiesta diverso per i singoli percorsi o pagine virtuali.

Costruttori

RequestValidator()

Inizializza una nuova istanza della classe RequestValidator.

Proprietà

Current

Ottiene o imposta un riferimento all'istanza RequestValidator corrente che verrà utilizzato in un'applicazione.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32)

Fornisce un metodo pubblico che chiama il metodo IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) protetto per convalidare i dati della richiesta HTTP.

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

Convalida una stringa che contiene i dati della richiesta HTTP.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche