Udostępnij za pośrednictwem


RequestValidator Klasa

Definicja

Definiuje podstawowe metody weryfikacji żądań niestandardowych.

public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
Dziedziczenie
RequestValidator

Przykłady

W poniższym przykładzie pokazano, jak utworzyć niestandardowy moduł sprawdzania poprawności żądania, który umożliwia używanie tylko określonego ciągu dla wartości ciągu zapytania.

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

W poniższym przykładzie pokazano, jak skonfigurować ASP.NET do używania niestandardowego modułu sprawdzania poprawności w pliku Web.config dla aplikacji.

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

Uwagi

Domyślnie ASP.NET nie weryfikuje żądań, dopóki kod jawnie nie zażąda wartości z żądania. Na przykład ASP.NET nie weryfikuje wartości ciągu zapytania, dopóki kod nie uzyskuje QueryString dostępu do kolekcji. Domyślnie ASP.NET również nie weryfikuje niektórych typów danych żądania, takich jak wartości formularzy, pliki cookie, nazwy plików przekazanych przy użyciu protokołu HTTP i wartość RawUrl właściwości.

Klasa RequestValidator jest klasą bazową, którą można zaimplementować w celu zapewnienia weryfikacji żądania niestandardowego. Implementując tę klasę, można określić, kiedy nastąpi walidacja, oraz typ danych żądania do przeprowadzenia walidacji.

Domyślnie ASP.NET zapewnia kontrole skryptów między witrynami (XSS). Można jednak uzupełnić lub zastąpić logikę weryfikacji żądań podaną w ASP.NET, tworząc niestandardową implementację XSS. Można na przykład napisać niestandardową implementację weryfikacji żądań, która skanuje pod kątem ataków polegających na wstrzyknięciu SQL oprócz sprawdzania ataków XSS.

Aby utworzyć niestandardową walidację żądania, należy napisać klasę niestandardową, która pochodzi z klasy bazowej RequestValidator . Następnie skonfigurujesz ASP.NET, aby używać niestandardowego modułu sprawdzania poprawności żądania w pliku Web.config na poziomie aplikacji. Klasę niestandardową można umieścić w folderze App_Code w skompilowanej bibliotece klas w folderze Bin lub w skompilowanej bibliotece klas w usłudze GAC.

Uwaga

Dla aplikacji można skonfigurować tylko jeden niestandardowy typ weryfikacji żądania. Nie można skonfigurować innego typu weryfikacji żądania dla poszczególnych ścieżek wirtualnych lub stron.

Konstruktory

RequestValidator()

Inicjuje nowe wystąpienie klasy RequestValidator.

Właściwości

Current

Pobiera lub ustawia odwołanie do bieżącego RequestValidator wystąpienia, które będzie używane w aplikacji.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32)

Udostępnia publiczną metodę, która wywołuje metodę chronioną IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) w celu zweryfikowania danych żądania HTTP.

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

Weryfikuje ciąg zawierający dane żądania HTTP.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też