RequestValidator Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Definuje základní metody pro ověření vlastních požadavků.
public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
- Dědičnost
-
RequestValidator
Příklady
Následující příklad ukazuje, jak vytvořit vlastní validátor požadavků, který umožňuje použití pouze konkrétního řetězce pro hodnoty řetězce dotazu.
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
Následující příklad ukazuje, jak nakonfigurovat ASP.NET pro použití vlastního validátoru v souboru Web.config pro aplikaci.
<system.web>
<httpRuntime requestValidationType="CustomRequestValidation" />
</system.web>
Poznámky
ve výchozím nastavení ASP.NET neověřuje požadavky, dokud kód explicitně nevyžádá hodnotu z požadavku. Například ASP.NET neověřuje hodnoty řetězce dotazu, dokud kód nepřistupuje ke kolekci QueryString . Ve výchozím nastavení ASP.NET také neověřuje některé typy dat požadavků, jako jsou hodnoty formuláře, soubory cookie, názvy souborů, které byly odeslány pomocí protokolu HTTP, a hodnotu RawUrl vlastnosti.
Třída RequestValidator je základní třída, kterou můžete implementovat za účelem zajištění vlastního ověření požadavků. Implementací této třídy můžete určit, kdy dojde k ověření a jaký typ dat požadavku se má ověření provést.
Ve výchozím nastavení ASP.NET poskytuje kontroly skriptování mezi weby (XSS). Logiku ověření požadavku, která je k dispozici v ASP.NET, však můžete doplnit nebo nahradit vytvořením vlastní implementace XSS. Můžete například napsat vlastní implementaci ověřování požadavků, která kromě útoků XSS kontroluje útoky prostřednictvím injektáže SQL.
Chcete-li vytvořit ověření vlastního požadavku, napíšete vlastní třídu, která je odvozena ze RequestValidator základní třídy. Potom nakonfigurujete ASP.NET tak, aby v souboru Web.config na úrovni aplikace používaly validátor vlastních požadavků. Vlastní třídu můžete umístit do složky App_Code, do zkompilované knihovny tříd ve složce Bin nebo do zkompilované knihovny tříd v centru GAC.
Poznámka
Pro aplikaci je možné nakonfigurovat pouze jeden typ ověření vlastního požadavku. Pro jednotlivé virtuální cesty nebo stránky není možné nakonfigurovat jiný typ ověření požadavku.
Konstruktory
RequestValidator() |
Inicializuje novou instanci RequestValidator třídy . |
Vlastnosti
Current |
Získá nebo nastaví odkaz na aktuální RequestValidator instanci, která bude použita v aplikaci. |
Metody
Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
GetHashCode() |
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Type Získá z aktuální instance. (Zděděno od Object) |
InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Poskytuje veřejnou metodu, která volá chráněnou IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) metodu za účelem ověření dat požadavků HTTP. |
IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Ověří řetězec, který obsahuje data požadavku HTTP. |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |