Al momento sei offline in attesa che la connessione Internet venga ristabilita

Controllo a livello di programmazione dei problemi di rappresentazione canonica di ASP.NET

INTRODUZIONE
In questo articolo viene descritto come aggiungere misure di salvaguardia in un'applicazione ASP.NET per evitare i comuni problemi di rappresentazione canonica.
Informazioni

Che cos'è la rappresentazione canonica

Si tratta di un processo mediante il quale viene determinato come risolvere diverse forme equivalenti di un nome in un unico nome standard, detto anche nome canonico. Ad esempio, in un particolare computer i nomi c:\dir\test.dat, test.dat e ...\..\test.dat possono fare tutti riferimento allo stesso file. La rappresentazione canonica è il processo mediante il quale tali nomi vengono associati a un nome simile a c:\dir\test.dat.

Quando un server Web riceve un URL, la richiesta viene associata dal server a un percorso nel file system che determina la risposta. La routine di rappresentazione canonica utilizzata per l'associazione della richiesta deve effettuare un'analisi corretta dell'URL per evitare di presentare o elaborare contenuti imprevisti. Per ulteriori informazioni sulla rappresentazione canonica, visitare il seguente sito Web Microsoft (informazioni in lingua inglese): Per migliorare la protezione delle applicazioni create, è opportuno seguire le procedure consigliate. Per ulteriori informazioni, vedere la sezione seguente.

Aggiunta di misure di protezione all'applicazione Web per evitare problemi di rappresentazione canonica

Gli sviluppatori che utilizzano Microsoft ASP.NET possono implementare ulteriori controlli per evitare i problemi di rappresentazione canonica di un'applicazione Web aggiungendo un gestore eventi Application_BeginRequest nel file Global.asax, che si trova nella directory principale dell'applicazione Web. Il gestore eventi viene eseguito per ogni richiesta Web. È possibile aggiungere codice al gestore eventi per proteggere l'applicazione dai problemi di rappresentazione canonica.

Esempio di codice

Nei seguenti esempi di codice viene dimostrato come aggiungere un gestore eventi Application_BeginRequest a un file Global.asax. Il gestore eventi consente di migliorare la protezione da caratteri non validi e URL dannosi, eseguendo verifiche dei percorsi, in modo da evitare i comuni problemi di rappresentazione canonica.

Codice di esempio di Global.asax (Visual Basic .NET)

<script language="vb" runat="server">Sub Application_BeginRequest(Sender as Object, E as EventArgs)    If (Request.Path.IndexOf(chr(92)) >= 0 OR _        System.IO.Path.GetFullPath(Request.PhysicalPath) <> Request.PhysicalPath) then        Throw New HttpException(404, "Not Found")    End IfEnd Sub</script>

Codice di esempio di Global.asax ( C#)

<script language="C#" runat="server">void Application_BeginRequest(object source, EventArgs e) {    if (Request.Path.IndexOf('\\') >= 0 ||        System.IO.Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {        throw new HttpException(404, "not found");    }}</script>

Declinazione di responsabilità

Le informazioni contenute nella Microsoft Knowledge Base vengono fornite "così come sono", senza garanzie di alcun tipo. Non viene riconosciuta alcuna garanzia, espressa o implicita, comprese, tra le altre, la garanzia di commerciabilità e idoneità per un fine particolare. Microsoft Corporation e i suoi fornitori non potranno in nessun caso essere ritenuti responsabili di danni di qualsiasi tipo, compresi danni diretti, indiretti, incidentali, consequenziali, mancato profitto o danni speciali, sebbene Microsoft Corporation o i suoi fornitori siano stati avvertiti della possibilità di tali danni. Alcuni Stati non ammettono l'esclusione o la limitazione di responsabilità per danni consequenziali o incidentali, quindi la limitazione di cui sopra potrebbe non applicarsi all'utente.
Proprietà

ID articolo: 887459 - Ultima revisione: 12/03/2007 18:52:42 - Revisione: 2.6

  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
  • kbsecurity kbtshoot KB887459
Feedback