HttpRequestValidationException Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 false
wartość , 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 |
|
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) |