RequestValidator Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 zażąda wartości z żądania. Na przykład ASP.NET nie weryfikuje QueryString wartości ciągu zapytania, dopóki kod nie uzyskuje 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 żądań niestandardowych. Implementując tę klasę, można określić, kiedy następuje walidacja, oraz typ danych żądania do wykonania weryfikacji.
Domyślnie ASP.NET zapewnia sprawdzanie 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 kodu SQL oprócz sprawdzania pod kątem ataków XSS.
Aby utworzyć walidację niestandardowego żą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 GAC.
Uwaga / Notatka
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
| Nazwa | Opis |
|---|---|
| RequestValidator() |
Inicjuje nowe wystąpienie klasy RequestValidator. |
Właściwości
| Nazwa | Opis |
|---|---|
| Current |
Pobiera lub ustawia odwołanie do bieżącego RequestValidator wystąpienia, które będzie używane w aplikacji. |
Metody
| Nazwa | Opis |
|---|---|
| Equals(Object) |
Określa, czy określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetType() |
Pobiera Type 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) |
Sprawdza poprawność ciągu zawierającego dane żądania HTTP. |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |