RequestValidator Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет базовые методы для проверки пользовательского запроса.
public ref class RequestValidator
public class RequestValidator
type RequestValidator = class
Public Class RequestValidator
- Наследование
-
RequestValidator
Примеры
В следующем примере показано, как создать настраиваемый проверяющий элемент запроса, позволяющий использовать только определенную строку для значений строк запроса.
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
В следующем примере показано, как настроить ASP.NET для использования пользовательского проверяющего элемента в файле Web.config для приложения.
<system.web>
<httpRuntime requestValidationType="CustomRequestValidation" />
</system.web>
Комментарии
По умолчанию ASP.NET не проверяет запросы, пока код явно не запрашивает значение из запроса. Например, ASP.NET не проверяет значения строки запроса, пока код не обращается к QueryString коллекции. По умолчанию ASP.NET также не проверяет некоторые типы данных запроса, таких как значения формы, файлы cookie, имена файлов, отправленных с помощью HTTP, и значение RawUrl свойства.
Класс RequestValidator — это базовый класс, который можно реализовать для предоставления пользовательской проверки запроса. Реализуя этот класс, можно определить, когда происходит проверка и какой тип данных запроса для выполнения проверки.
По умолчанию ASP.NET предоставляет проверки межсайтовых сценариев (XSS). Однако можно дополнить или заменить логику проверки запроса, предоставляемую в ASP.NET, создав пользовательскую реализацию XSS. Например, можно написать пользовательскую реализацию проверки запроса, которая сканирует атаки внедрения SQL в дополнение к проверке атак XSS.
Чтобы создать проверку пользовательского запроса, необходимо написать пользовательский класс, производный от RequestValidator базового класса. Затем вы настроите ASP.NET использовать настраиваемый проверяющий элемент запроса в файле Web.config уровня приложения. Пользовательский класс можно поместить в папку App_Code, в скомпилированную библиотеку классов в папке Bin или в скомпилированной библиотеке классов в GAC.
Замечание
Для приложения можно настроить только один пользовательский тип проверки запроса. Невозможно настроить другой тип проверки запроса для отдельных виртуальных путей или страниц.
Конструкторы
| Имя | Описание |
|---|---|
| RequestValidator() |
Инициализирует новый экземпляр класса RequestValidator. |
Свойства
| Имя | Описание |
|---|---|
| Current |
Возвращает или задает ссылку на текущий RequestValidator экземпляр, который будет использоваться в приложении. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| InvokeIsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Предоставляет общедоступный метод, который вызывает защищенный IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) метод для проверки данных HTTP-запроса. |
| IsValidRequestString(HttpContext, String, RequestValidationSource, String, Int32) |
Проверяет строку, содержащую данные HTTP-запроса. |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |