HttpRequestValidationException Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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 |
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) |