Freigeben über


HttpRequestValidationException-Klasse

Die Ausnahme, die ausgelöst wird, wenn als Teil der Anforderungsdaten eine möglicherweise böswillige Eingabezeichenfolge vom Client empfangen wird. Diese Klasse kann nicht vererbt werden.

Namespace: System.Web
Assembly: System.Web (in system.web.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public NotInheritable Class HttpRequestValidationException
    Inherits HttpException
'Usage
Dim instance As HttpRequestValidationException
[SerializableAttribute] 
public sealed class HttpRequestValidationException : HttpException
[SerializableAttribute] 
public ref class HttpRequestValidationException sealed : public HttpException
/** @attribute SerializableAttribute() */ 
public final class HttpRequestValidationException extends HttpException
SerializableAttribute 
public final class HttpRequestValidationException extends HttpException

Hinweise

Das Einschränken und Validieren von Benutzereingaben ist bei Webanwendungen sehr wichtig, um Angriffe von Hackern zu verhindern, bei denen böswillige Eingabezeichenfolgen verwendet werden. Websiteübergreifende Skriptangriffe sind ein Beispiel hierfür. Andere Arten von böswilligen oder unerwünschten Daten können in einer Anforderung über verschiedene Eingabeformen übergeben werden. Durch das Einschränken dieser Arten von Daten, die auf einer niedrigen Ebene an die Anwendung übergeben werden, können Sie unerwünschte Ereignisse vermeiden, auch wenn die Programmierer, die Ihren Code verwenden, keine geeigneten Validierungstechniken einsetzen.

Bei der Anforderungsvalidierung werden potentiell böswillige Clienteingaben erkannt. Dabei wird eine Ausnahme ausgelöst, die die Verarbeitung der Anforderung abbricht. Ein Anforderungsabbruch kann Anzeichen eines Versuchs sein, die Anwendungssicherheit zu gefährden, z. B. bei einem websiteübergreifenden Skriptangriff. Es wird dringend empfohlen, dass die Anwendung alle Eingaben explizit auf Anforderungsabbrüche überprüft. Sie können die Anforderungsvalidierung allerdings durch Festlegen des validateRequest-Attributs in der @ Page-Direktive auf false deaktivieren, wie im folgenden Beispiel dargestellt:

<%@ Page validateRequest="false" %>

Zum Deaktivieren der Anforderungsvalidierung für die Anwendung müssen Sie eine Web.config-Datei für diese erstellen oder ändern und das validateRequest-Attribut des pages-Abschnitts auf false festlegen, wie im folgenden Beispiel dargestellt:

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

Zum Deaktivieren der Anforderungsvalidierung für alle Anwendungen auf dem Server nehmen Sie diese Änderung in der Datei Machine.config vor.

Hinweis

Es wird dringend empfohlen, dass die Anwendung neben der Anforderungsvalidierung durch ASP.NET alle verwendeten Eingaben explizit prüft. Bei der Anforderungsvalidierung können nicht alle Angriffe abgefangen werden, insbesondere keine direkten Angriffe auf die Anwendungslogik.

Beispiel

Im folgenden Codebeispiel wird das Prüfen auf böswillige Benutzereingaben mit einer HttpRequestValidationException veranschaulicht.

<%@ 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>
<%@ Page Language="C#" %>

<script runat="server">
    void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = txt1.Text;
    }
</script>

<html>
<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>

.NET Framework-Sicherheit

Vererbungshierarchie

System.Object
   System.Exception
     System.SystemException
       System.Runtime.InteropServices.ExternalException
         System.Web.HttpException
          System.Web.HttpRequestValidationException

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1

Siehe auch

Referenz

HttpRequestValidationException-Member
System.Web-Namespace