RequestValidator Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert Basismethoden für die benutzerdefinierte Anforderungsüberprüfung.
public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
- Vererbung
-
RequestValidator
Beispiele
Das folgende Beispiel zeigt, wie Sie einen benutzerdefinierten Anforderungs validator erstellen, der nur eine bestimmte Zeichenfolge für Abfragezeichenfolgenwerte zulässt.
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
Das folgende Beispiel zeigt, wie Sie ASP.NET so konfigurieren, dass der benutzerdefinierte Validator in der Web.config Datei für eine Anwendung verwendet wird.
<system.web>
<httpRuntime requestValidationType="CustomRequestValidation" />
</system.web>
Hinweise
Standardmäßig überprüft ASP.NET Anforderungen erst, wenn code explizit einen Wert aus der Anforderung anfordert. Beispielsweise überprüft ASP.NET abfragezeichenfolgenwerte erst, wenn code auf die QueryString Auflistung zugreift. Standardmäßig überprüft ASP.NET auch keine Arten von Anforderungsdaten, z. B. Formularwerte, Cookies, die Namen von Dateien, die mit HTTP hochgeladen wurden, und den Wert der RawUrl Eigenschaft.
Die RequestValidator Klasse ist eine Basisklasse, die Sie implementieren können, um eine benutzerdefinierte Anforderungsüberprüfung bereitzustellen. Durch die Implementierung dieser Klasse können Sie bestimmen, wann die Überprüfung erfolgt und für welche Art von Anforderungsdaten eine Überprüfung durchgeführt werden soll.
Standardmäßig stellt ASP.NET websiteübergreifende Skriptingprüfungen (XSS) bereit. Sie können jedoch die Anforderungsüberprüfungslogik ergänzen oder ersetzen, die in ASP.NET bereitgestellt wird, indem Sie eine benutzerdefinierte Implementierung des XSS erstellen. Sie können z. B. eine benutzerdefinierte Anforderungsüberprüfungsimplementierung schreiben, die zusätzlich zur Überprüfung auf XSS-Angriffe nach SQL-Einfügeangriffen sucht.
Zum Erstellen einer benutzerdefinierten Anforderungsüberprüfung schreiben Sie eine benutzerdefinierte Klasse, die von der RequestValidator Basisklasse abgeleitet wird. Anschließend konfigurieren Sie ASP.NET für die Verwendung des benutzerdefinierten Anforderungs validators in Web.config Datei auf Anwendungsebene. Sie können die benutzerdefinierte Klasse im ordner App_Code, in einer kompilierten Klassenbibliothek im Bin-Ordner oder in einer kompilierten Klassenbibliothek im GAC ablegen.
Hinweis
Für eine Anwendung kann nur ein benutzerdefinierter Anforderungsüberprüfungstyp konfiguriert werden. Es ist nicht möglich, einen anderen Anforderungsüberprüfungstyp für einzelne virtuelle Pfade oder Seiten zu konfigurieren.
Konstruktoren
| Name | Beschreibung |
|---|---|
| RequestValidator() |
Initialisiert eine neue Instanz der RequestValidator-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| Current |
Dient zum Abrufen oder Festlegen eines Verweises auf die aktuelle RequestValidator Instanz, die in einer Anwendung verwendet wird. |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Stellt eine öffentliche Methode bereit, die die geschützte IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) Methode aufruft, um HTTP-Anforderungsdaten zu überprüfen. |
| IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Überprüft eine Zeichenfolge, die HTTP-Anforderungsdaten enthält. |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |