Udostępnij za pośrednictwem


HttpRequestValidationException Klasa

Definicja

Wyjątek zgłaszany podczas odbierania potencjalnie złośliwego ciągu wejściowego od klienta w ramach danych żądania. Klasa ta nie może być dziedziczona.

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
Dziedziczenie
Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano, jak sprawdzić złośliwe dane wejściowe użytkownika przy użyciu elementu HttpRequestValidationException.

Ważne

W tym przykładzie znajduje się pole tekstowe, które akceptuje dane wejściowe użytkownika, co jest potencjalnym zagrożeniem bezpieczeństwa. Domyślnie ASP.NET strony sieci Web weryfikują, czy dane wejściowe użytkownika nie zawierają skryptów ani elementów HTML. Aby uzyskać więcej informacji, zobacz Omówienie luk w zabezpieczeniach skryptów.

<%@ 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>

Uwagi

Ograniczenie i weryfikowanie danych wejściowych użytkownika jest niezbędne w aplikacji internetowej, aby zapobiec atakom hakerów, które opierają się na złośliwych ciągach wejściowych. Ataki skryptowe obejmujące wiele witryn są jednym z przykładów takich hacków. Inne typy złośliwych lub niepożądanych danych mogą być przekazywane w żądaniu za pośrednictwem różnych form danych wejściowych. Ograniczając rodzaje danych przekazywanych na niskim poziomie w aplikacji, można zapobiec niepożądanym zdarzeń nawet wtedy, gdy programiści korzystający z kodu nie umieszczają odpowiednich technik weryfikacji.

Żądanie weryfikacji wykrywa potencjalnie złośliwe dane wejściowe klienta i zgłasza ten wyjątek w celu przerwania przetwarzania żądania. Żądanie przerwania może wskazywać na próbę naruszenia zabezpieczeń aplikacji, na przykład ataku skryptowego obejmującego wiele witryn. Zdecydowanie zaleca się, aby aplikacja jawnie sprawdzała wszystkie dane wejściowe dotyczące przerwania żądań. Można jednak wyłączyć walidację żądania, ustawiając validateRequest atrybut w @ Page dyrektywie na falsewartość , jak pokazano w poniższym przykładzie:

<%@ Page validateRequest="false" %>

Aby wyłączyć walidację żądania dla aplikacji, należy zmodyfikować lub utworzyć plik Web.config dla aplikacji i ustawić validateRequest atrybut pages sekcji na false, jak pokazano w poniższym przykładzie:

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

Aby wyłączyć walidację żądania dla wszystkich aplikacji na serwerze, można wprowadzić tę modyfikację do pliku Machine.config.

Uwaga

Zdecydowanie zaleca się jawne sprawdzenie wszystkich danych wejściowych używanych przez aplikację oprócz weryfikacji żądania przeprowadzonej przez ASP.NET. Funkcja sprawdzania poprawności żądań nie może przechwytywać wszystkich ataków, zwłaszcza tych, które zostały specjalnie przygotowane pod kątem logiki aplikacji.

Konstruktory

HttpRequestValidationException()

Tworzy nowe wystąpienie klasy HttpRequestValidationException.

HttpRequestValidationException(String)

Tworzy nowy HttpRequestValidationException wyjątek z określonym komunikatem o błędzie.

HttpRequestValidationException(String, Exception)

Inicjuje nowe wystąpienie HttpRequestValidationException klasy z określonym komunikatem o błędzie i odwołaniem do wewnętrznego wyjątku, który jest przyczyną wyjątku.

Właściwości

Data

Pobiera kolekcję par klucz/wartość, które zapewniają dodatkowe informacje zdefiniowane przez użytkownika dotyczące wyjątku.

(Odziedziczone po Exception)
ErrorCode

HRESULT Pobiera błąd.

(Odziedziczone po ExternalException)
HelpLink

Pobiera lub ustawia link do pliku pomocy skojarzonego z tym wyjątkiem.

(Odziedziczone po Exception)
HResult

Pobiera lub ustawia HRESULT, zakodowaną wartość liczbową przypisaną do określonego wyjątku.

(Odziedziczone po Exception)
InnerException

Exception Pobiera wystąpienie, które spowodowało bieżący wyjątek.

(Odziedziczone po Exception)
Message

Pobiera komunikat opisujący bieżący wyjątek.

(Odziedziczone po Exception)
Source

Pobiera lub ustawia nazwę aplikacji lub obiektu, który powoduje błąd.

(Odziedziczone po Exception)
StackTrace

Pobiera reprezentację ciągu natychmiastowych ramek w stosie wywołań.

(Odziedziczone po Exception)
TargetSite

Pobiera metodę, która zgłasza bieżący wyjątek.

(Odziedziczone po Exception)
WebEventCode

Pobiera kody zdarzeń skojarzone z wyjątkiem HTTP.

(Odziedziczone po HttpException)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetBaseException()

W przypadku zastąpienia w klasie pochodnej zwraca Exception główną przyczynę co najmniej jednego kolejnego wyjątku.

(Odziedziczone po Exception)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetHtmlErrorMessage()

Pobiera komunikat o błędzie HTML, aby powrócić do klienta.

(Odziedziczone po HttpException)
GetHttpCode()

Pobiera kod stanu odpowiedzi HTTP, aby powrócić do klienta.

(Odziedziczone po HttpException)
GetObjectData(SerializationInfo, StreamingContext)

Pobiera informacje o wyjątku i dodaje go do SerializationInfo obiektu.

(Odziedziczone po HttpException)
GetType()

Pobiera typ środowiska uruchomieniowego bieżącego wystąpienia.

(Odziedziczone po Exception)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg zawierający wartość HRESULT błędu.

(Odziedziczone po ExternalException)

Zdarzenia

SerializeObjectState
Przestarzałe.

Występuje, gdy wyjątek jest serializowany w celu utworzenia obiektu stanu wyjątku zawierającego serializowane dane o wyjątku.

(Odziedziczone po Exception)

Dotyczy