Поделиться через


HttpRequestValidationException Класс

Определение

Исключение, выдаваемое при получении от клиента потенциально опасной строки входящих данных в качестве части данных запроса. Этот класс не наследуется.

public ref class HttpRequestValidationException sealed : System::Web::HttpException
public sealed class HttpRequestValidationException : System.Web.HttpException
[System.Serializable]
public sealed class HttpRequestValidationException : System.Web.HttpException
type HttpRequestValidationException = class
    inherit HttpException
[<System.Serializable>]
type HttpRequestValidationException = class
    inherit HttpException
Public NotInheritable Class HttpRequestValidationException
Inherits HttpException
Наследование
Атрибуты

Примеры

В следующем примере кода показано, как проверить наличие вредоносных пользовательских данных с помощью HttpRequestValidationException.

Важно!

В этом примере имеется текстовое поле, принимающее вводимые пользователем данные, что является потенциальной угрозой безопасности. По умолчанию данные, вводимые пользователем на веб-страницах ASP.NET, проверяются на наличие скриптов и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = txt1.Text;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox id="txt1" Runat="server" />
        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />
        <br /><br />You entered: <asp:Label ID="Label1" Runat="server" Text="Label" />.
    </div>
    </form>
</body>
</html>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = txt1.Text
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox id="txt1" Runat="server" />
        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />
        <br /><br />You entered: <asp:Label ID="Label1" Runat="server" Text="Label" />.
    </div>
    </form>
</body>
</html>

Комментарии

Ограничение и проверка входных данных пользователем необходимы в веб-приложении для предотвращения хакерских атак, которые используют вредоносные входные строки. Одним из примеров таких атак являются атаки с использованием межсайтовых сценариев. Другие типы вредоносных или нежелательных данных могут передаваться в запросе через различные формы ввода. Ограничивая типы данных, передаваемых на низком уровне в приложении, можно предотвратить нежелательные события, даже если программисты, использующие ваш код, не применяют надлежащие методы проверки.

Проверка запроса обнаруживает потенциально вредоносные данные клиента и создает это исключение, чтобы прервать обработку запроса. Прерывание запроса может указывать на попытку поставить под угрозу безопасность приложения, например атаку с использованием междоменных сценариев. Настоятельно рекомендуется, чтобы приложение явным образом проверило все входные данные, связанные с прерыванием запроса. Однако вы можете отключить проверку запросов, задав validateRequest атрибуту в директиве false@ Page значение , как показано в следующем примере:

<%@ Page validateRequest="false" %>

Чтобы отключить проверку запросов для приложения, необходимо изменить или создать файл Web.config для приложения и присвоить validateRequest атрибуту pages раздела falseзначение , как показано в следующем примере:

<configuration>
  <system.web>
    <pages validateRequest="false" />
  </system.web>
</configuration>

Чтобы отключить проверку запросов для всех приложений на сервере, можно внести это изменение в файл Machine.config.

Примечание

Настоятельно рекомендуется, чтобы приложение явным образом проверило все входные данные, которые оно использует, в дополнение к проверке запроса, выполняемой ASP.NET. Функция проверки запросов не может перехватывать все атаки, особенно атаки, созданные специально для логики приложения.

Конструкторы

HttpRequestValidationException()

Создает новый экземпляр класса HttpRequestValidationException.

HttpRequestValidationException(String)

Создает новое исключение HttpRequestValidationException с указанным сообщением об ошибке.

HttpRequestValidationException(String, Exception)

Инициализирует новый экземпляр класса HttpRequestValidationException с указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое стало причиной данного исключения.

Свойства

Data

Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.

(Унаследовано от Exception)
ErrorCode

Возвращает HRESULT ошибки.

(Унаследовано от ExternalException)
HelpLink

Получает или задает ссылку на файл справки, связанный с этим исключением.

(Унаследовано от Exception)
HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.

(Унаследовано от Exception)
InnerException

Возвращает экземпляр класса Exception, который вызвал текущее исключение.

(Унаследовано от Exception)
Message

Возвращает сообщение, описывающее текущее исключение.

(Унаследовано от Exception)
Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.

(Унаследовано от Exception)
StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.

(Унаследовано от Exception)
TargetSite

Возвращает метод, создавший текущее исключение.

(Унаследовано от Exception)
WebEventCode

Получает коды событий, связанные с HTTP-исключением.

(Унаследовано от HttpException)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetBaseException()

При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.

(Унаследовано от Exception)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetHtmlErrorMessage()

Возвращает HTML-сообщение об ошибке для возврата клиенту.

(Унаследовано от HttpException)
GetHttpCode()

Возвращает код состояния HTTP-ответа для передачи клиенту.

(Унаследовано от HttpException)
GetObjectData(SerializationInfo, StreamingContext)

Возвращает сведения об исключении и добавляет их в объект SerializationInfo.

(Унаследовано от HttpException)
GetType()

Возвращает тип среды выполнения текущего экземпляра.

(Унаследовано от Exception)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, содержащую значение HRESULT ошибки.

(Унаследовано от ExternalException)

События

SerializeObjectState
Устаревшие..

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.

(Унаследовано от Exception)

Применяется к