HttpRequestValidationException Classe

Definizione

Eccezione generata quando il client riceve una stringa di input potenzialmente pericolosa come parte dei dati della richiesta. La classe non può essere ereditata.

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
Ereditarietà
Attributi

Esempio

Nell'esempio di codice seguente viene illustrato come verificare la presenza di input utente dannoso usando un HttpRequestValidationExceptionoggetto .

Importante

L'esempio include una casella di testo che accetta l'input dell'utente e rappresenta quindi una potenziale minaccia alla sicurezza. Per impostazione predefinita, le pagine Web ASP.NET verificano che l'input dell'utente non includa script o elementi HTML. Per altre informazioni, vedere Cenni preliminari sugli attacchi tramite script.

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

Commenti

Il vincolo e la convalida dell'input utente sono essenziali in un'applicazione Web per evitare attacchi hacker che si basano su stringhe di input dannose. Gli attacchi di scripting tra siti sono un esempio di tali hack. Altri tipi di dati dannosi o non indesiderati possono essere passati in una richiesta tramite varie forme di input. Limitando i tipi di dati passati a un livello basso in un'applicazione, è possibile impedire eventi indesiderati, anche quando i programmatori che usano il codice non inseriscono le tecniche di convalida appropriate.

La convalida della richiesta rileva l'input client potenzialmente dannoso e genera questa eccezione per interrompere l'elaborazione della richiesta. Un'interruzione della richiesta può indicare un tentativo di compromettere la sicurezza dell'applicazione, ad esempio un attacco di scripting tra siti. È consigliabile controllare in modo esplicito tutto l'input relativo all'interruzione della richiesta. È tuttavia possibile disabilitare la convalida della richiesta impostando l'attributo nella @ Page direttiva su false, come illustrato nell'esempio validateRequest seguente:

<%@ Page validateRequest="false" %>

Per disabilitare la convalida della richiesta per l'applicazione, è necessario modificare o creare un file Web.config per l'applicazione e impostare l'attributo validateRequest della pages sezione su false, come illustrato nell'esempio seguente:

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

Per disabilitare la convalida delle richieste per tutte le applicazioni nel server, è possibile apportare questa modifica al file di Machine.config.

Nota

È consigliabile controllare in modo esplicito tutti gli input usati dall'applicazione oltre alla convalida della richiesta eseguita da ASP.NET. La funzionalità di convalida della richiesta non può rilevare tutti gli attacchi, soprattutto quelli creati in modo specifico contro la logica dell'applicazione.

Costruttori

HttpRequestValidationException()

Crea una nuova istanza della classe HttpRequestValidationException.

HttpRequestValidationException(String)

Crea una nuova eccezione HttpRequestValidationException con il messaggio di errore specificato.

HttpRequestValidationException(String, Exception)

Consente di inizializzare una nuova istanza della classe HttpRequestValidationException con il messaggio di errore specificato e un riferimento all'eccezione interna che ha generato l'eccezione.

Proprietà

Data

Ottiene una raccolta di coppie chiave/valore che forniscono informazioni definite dall'utente aggiuntive sull'eccezione.

(Ereditato da Exception)
ErrorCode

Ottiene l'oggetto HRESULT dell'errore.

(Ereditato da ExternalException)
HelpLink

Ottiene o imposta un collegamento al file della Guida associato all'eccezione.

(Ereditato da Exception)
HResult

Ottiene o imposta HRESULT, un valore numerico codificato che viene assegnato a un'eccezione specifica.

(Ereditato da Exception)
InnerException

Ottiene l'istanza di Exception che ha causato l'eccezione corrente.

(Ereditato da Exception)
Message

Ottiene un messaggio che descrive l'eccezione corrente.

(Ereditato da Exception)
Source

Ottiene o imposta il nome dell'oggetto o dell'applicazione che ha generato l'errore.

(Ereditato da Exception)
StackTrace

Ottiene una rappresentazione di stringa dei frame immediati nello stack di chiamate.

(Ereditato da Exception)
TargetSite

Ottiene il metodo che genera l'eccezione corrente.

(Ereditato da Exception)
WebEventCode

Ottiene i codici di evento associati all'eccezione HTTP.

(Ereditato da HttpException)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBaseException()

Quando ne viene eseguito l'override in una classe derivata, restituisce l'Exception che è la causa radice di una o più eccezioni successive.

(Ereditato da Exception)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetHtmlErrorMessage()

Ottiene il messaggio di errore HTML da restituire al client.

(Ereditato da HttpException)
GetHttpCode()

Ottiene il codice di stato della risposta HTTP da restituire al client.

(Ereditato da HttpException)
GetObjectData(SerializationInfo, StreamingContext)

Ottiene informazioni sull'eccezione e le aggiunge all'oggetto SerializationInfo.

(Ereditato da HttpException)
GetType()

Ottiene il tipo di runtime dell'istanza corrente.

(Ereditato da Exception)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa contenente il valore HRESULT dell'errore.

(Ereditato da ExternalException)

Eventi

SerializeObjectState
Obsoleti.

Si verifica quando un'eccezione viene serializzata per creare un oggetto di stato eccezione contenente i dati serializzati relativi all'eccezione.

(Ereditato da Exception)

Si applica a