Share via


Protezione del sistema di spostamento all'interno dei siti ASP.NET

Aggiornamento: novembre 2007

Il sistema di spostamento all'interno dei siti ASP.NET fornisce funzionalità per la gestione di un archivio centrale che contiene i collegamenti a tutte le pagine di un sito Web. È quindi possibile eseguire il rendering dei collegamenti come elenchi o menu di spostamento in ogni pagina, tramite l'inclusione di uno specifico controllo server Web.

Il sistema di spostamento all'interno dei siti ASP.NET è utilizzato principalmente con i controlli di spostamento, come SiteMapPath, SiteMapDataSource, TreeView e i controlli Menu, oppure è utilizzato a livello di programmazione con le classi SiteMap e SiteMapProvider. Le informazioni riportate nel presente argomento descrivono come migliorare la protezione delle funzionalità di spostamento.

Sebbene le procedure consigliate di configurazione e codifica riportate di seguito consentano di migliorare la protezione delle applicazioni, è comunque importante mantenere costantemente aggiornato il server applicazioni installando i più recenti aggiornamenti per la protezione di Microsoft Windows e Internet Information Services (IIS), nonché tutti gli aggiornamenti di Microsoft SQL Server o altre origini dati di appartenenza. Per ulteriori informazioni, vedere il sito Web Windows Update.

Per informazioni più dettagliate sulle procedure consigliate per scrivere codice protetto e proteggere le applicazioni, consultare il testo "Writing Secure Code" di Michael Howard e David LeBlanc e leggere le istruzioni disponibili sul sito Web Microsoft Patterns and Practices (informazioni in lingua inglese). Vedere anche Suggerimenti di base sulla protezione delle applicazioni Web.

In questo argomento

Protezione delle impostazioni di configurazione dello spostamento

Protezione dei dati della mappa del sito

Collegamenti nascosti a utenti specifici

API della mappa del sito

Protezione delle implementazioni del provider personalizzato di mappa del sito

Messaggi di errore ed eventi

Programmi antivirus

Protezione delle impostazioni di configurazione dello spostamento

Per impostazione predefinita, le funzionalità di spostamento all'interno dei siti ASP.NET sono attivate. È possibile disattivarle impostando l'attributo enabled per l'elemento siteMap su false nel file di configurazione (Web.config). Nella seguente sezione viene illustrato come proteggere i dati relativi agli spostamenti nel file Web.config. Per informazioni sulle impostazioni di configurazione del sistema di spostamento e sui relativi valori predefiniti, vedere Elemento siteMap (schema delle impostazioni ASP.NET).

Protezione dei valori di configurazione

Se si utilizza il provider di mappa del sito ASP.NET predefinito, non è necessario proteggere le impostazioni di configurazione del sistema di spostamento contenute in un file Web.config. Tuttavia, se si implementa un provider personalizzato di mappa del sito che utilizza un database e la stringa di connessione del database viene memorizzata in un file di configurazione, è necessario seguire i suggerimenti riportati in Protezione dell'accesso ai dati per crittografare la stringa di connessione.

In un ambiente host, il file di configurazione dovrebbe negare i diritti di override per l'elemento Elemento siteMap (schema delle impostazioni ASP.NET), in modo da impedire che altri utenti riconfigurino il sito per utilizzare una diversa mappa del sito o un diverso provider di mappa del sito. Per ulteriori informazioni, vedere Blocco delle impostazioni di configurazione. Vedere anche Protezione delle applicazioni ASP.NET in ambienti host.

Mapping degli URL

È possibile eseguire il mapping degli URL in un file di configurazione a URL descrittivi utilizzando l'elemento Elemento urlMappings (schema delle impostazioni ASP.NET) nel file Web.config. ASP.NET consente solo una sintassi relativa all'applicazione, come, ad esempio, ~/filename.aspx. In altre parole, ASP.NET non consente agli URL mappati di fare riferimento a una pagina esterna all'applicazione. In questo modo, viene garantita la protezione contro eventuali tentativi da parte di un client ISP di visualizzare una pagina esterna all'applicazione degli URL in un ambiente host.

Protezione dei dati della mappa del sito

Per impostazione predefinita, ASP.NET è configurato per impedire che i client eseguano il download di file con estensioni note come, ad esempio, sitemap. Per proteggere i dati, memorizzare i file di dati personalizzati della mappa del sito con estensione diversa da sitemap nella cartella App_Data e applicare gli elenchi di controllo dell'accesso appropriati. Ad esempio, in Windows 2000 o Windows XP, concedere all'account del processo ASP.NET l'accesso in sola lettura. Nella famiglia Windows Server 2003, concedere a Network Service l'accesso in sola lettura. Per ulteriori informazioni, vedere Elenchi di controllo di accesso (ACL, Access Control List) ASP.NET necessari.

Il sistema di spostamento all'interno dei siti ASP.NET caricherà un file di mappa del sito solo se il file è presente nella struttura della directory dell'applicazione. Questo impedisce che nelle applicazioni in ambiente host i dati della mappa del sito vengano caricati da un'altra applicazione.

Il sistema di spostamento all'interno dei siti ASP.NET non consente l'accesso a file esterni alla struttura della directory dell'applicazione. Se la mappa di un sito contiene un nodo che fa riferimento a un altro file di mappa del sito, e se il percorso di tale file è esterno all'applicazione, verrà generata un'eccezione. L'eccezione contiene il percorso specificato in SiteMapNode e lo elenca come esterno all'ambito dell'applicazione, ma non indica se il percorso è valido. Questo garantisce una protezione contro eventuali tentativi utilizzare il sistema di spostamento all'interno del sito ASP.NET per individuare i percorsi di file validi su un server.

Per informazioni su come proteggere i dati della mappa del sito quando si implementa un provider personalizzato di mappa del sito che utilizza un database, vedere Protezione dell'accesso ai dati.

Processo di caricamento della mappa del sito

Il provider predefinito della mappa del sito ASP.NET carica i dati relativi alla mappa come documento XML e li memorizza nella cache come dati statici all'avvio dell'applicazione. In fase di caricamento, un file di mappa del sito di dimensioni eccessive può impegnare una quantità consistente di memoria e CPU. In un ambiente host, limitare le dimensioni delle mappe del sito che i clienti possono creare per i propri siti. Questo protegge contro gli attacchi di tipo Denial of Service.

Per mantenere aggiornati i dati relativi agli spostamenti, le funzionalità di spostamento all'interno dei siti ASP.NET si basano sulle notifiche del file. Quando un file di mappa del sito viene modificato, ASP.NET carica nuovamente i dati della mappa del sito. È possibile, in tal caso, che si verifichi un problema se la struttura di spostamento all'interno del sito è costituita da mappe del sito figlio cui è consentito l'accesso in scrittura a utenti ignari del fatto che ogni modifica da loro apportata causerà un ricaricamento. Accertarsi di impostare un accesso restrittivo a tutti i file di mappa del sito. Fra i gruppi di utenti, definire quali dispongono dell'autorizzazione per l'aggiornamento dei file e in quali posizioni, quindi impostare le autorizzazioni sui file di mappa del sito per ciascun gruppo di utenti.

Collegamenti nascosti a utenti specifici

Il sistema di spostamento all'interno dei siti ASP.NET consente di proteggere i singoli nodi della mappa del sito mediante un ruolo. Per nascondere parte della struttura di spostamento all'interno del sito ad alcuni utenti, è possibile attivare la funzionalità di rimozione della protezione ASP.NET. Una volta attivata questa funzione, ASP.NET verifica l'autorizzazione URL e verifica eventualmente le autorizzazioni di accesso al file incluso in un nodo della mappa del sito. ASP.NET visualizza il collegamento al file solo se l'utente è autorizzato ad accedervi. Per consentire a tutti gli utenti di visualizzare un collegamento a un file con restrizioni, impostare l'attributo roles dei corrispondenti nodi della mappa del sito su un asterisco (*), o un carattere jolly, per permettere a tutti i client di visualizzare il collegamento. Per ulteriori informazioni, vedere Rimozione della protezione della mappa del sito ASP.NET.

Inclusione di URL esterni in una mappa del sito

In una mappa del sito, è possibile fare riferimento a URL esterni all'applicazione ASP.NET. Tuttavia, l'accesso a un URL esterno all'applicazione non può essere verificato da ASP.NET. Ad esempio, se viene creato un nodo della mappa del sito che corrisponde a https://www.microsoft.com e viene attivata la funzionalità di rimozione della protezione, il collegamento non risulterà visibile ai client perché ASP.NET non è in grado di effettuare il test delle autorizzazioni di accesso per un URL esterno. Se viene attivata la funzionalità di rimozione della protezione e i nodi della mappa del sito corrispondono a URL esterni, impostare l'attributo roles dei nodi su un asterisco (*), in modo da consentire a tutti i clienti di visualizzare il collegamento anche se ASP.NET non è in grado di autorizzare l'accesso al collegamento esterno.

API di spostamento all'interno dei siti

Le classi di spostamento nei siti sono disponibili pubblicamente per qualsiasi codice in esecuzione sul computer. L'esecuzione delle classi di spostamento dei siti avviene in condizioni di attendibilità minima. Tuttavia, per caricare i dati della mappa del sito, è richiesto un livello di attendibilità basso perché ASP.NET deve utilizzare le operazioni di I/O di file per aprire il file di mappa del sito utilizzando il provider predefinito di mappa del sito, XmlSiteMapProvider. È anche possibile scegliere di sviluppare un provider personalizzato di mappa del sito che non sia soggetto a questa restrizione.

Per ulteriori informazioni, vedere Livelli di attendibilità e file di criteri ASP.NET e Implementazione dei provider di mappa del sito ASP.NET.

Protezione delle implementazioni del provider personalizzato di mappa del sito

Durante l'implementazione di un provider personalizzato di mappa del sito, verificare che per tale provider siano state implementate le procedure ottimali di protezione. Tale verifica assume una particolare importanza in uno scenario di hosting, in cui un provider personalizzato di mappa del sito non implementato correttamente può arrivare a perdere informazioni o contenere impostazioni di configurazione predefinite non protette. Seguire le procedure di protezione ottimali per evitare attacchi come, ad esempio, attacchi di tipo SQL injection. Ad esempio, è necessario verificare sempre l'input dei parametri.

Per ulteriori informazioni sulla protezione di un database, vedere Protezione dell'accesso ai dati. Vedere anche Protezione delle applicazioni ASP.NET in ambienti host.

Messaggi di errore ed eventi

Nelle sezioni riportate di seguito viene illustrato come limitare i potenziali rischi di protezione esposti da messaggi di errore ed eventi imprevisti.

Messaggi di eccezione

Le eccezioni generate dalle funzionalità di spostamento all'interno dei siti ASP.NET non espongono informazioni privilegiate. Rivedere e testare le classi personalizzate nell'applicazione Web per individuare le richieste e gli input non validi e accertarsi che le informazioni privilegiate non vengano esposte quando è generata un'eccezione.

Messaggi di errore

Per impedire l'esposizione di informazioni riservate a origini indesiderate, attivare gli errori personalizzati per l'applicazione oppure visualizzare i messaggi di errore dettagliati solo se il client è il server Web stesso. Per ulteriori informazioni, vedere Elemento customErrors (schema delle impostazioni ASP.NET).

Log eventi

Se il computer esegue la famiglia Windows Server 2003, è possibile migliorare la protezione dell'applicazione impostando la protezione del log eventi. Impostare inoltre i parametri relativi alla dimensione, al mantenimento e ad altre proprietà del log eventi per impedire un attacco di tipo denial of service. Per impostazione predefinita, solo i membri del gruppo di protezione Administrators possono visualizzare i log eventi. Per ulteriori informazioni sulla configurazione dei log eventi, cercare "Visualizzatore eventi" della Guida in linea e supporto tecnico di Windows.

Programmi antivirus

I programmi antivirus non devono essere configurati in modo da modificare i file di mappa del sito. Questo causa infatti un inutile nuovo caricamento dei dati di spostamento poiché, per mantenere aggiornati i dati relativi agli spostamenti, le funzionalità di spostamento all'interno dei siti ASP.NET si basano sulle notifiche dei file.

Vedere anche

Concetti

Protezione dei controlli standard

Protezione dei ruoli

Protezione dello stato sessione

Protezione dell'accesso ai dati

Protezione dell'appartenenza

Cenni preliminari sui pericoli di protezione a cui sono esposte le applicazioni Web

Suggerimenti di base sulla protezione delle applicazioni Web

Altre risorse

Protezione delle applicazioni Web ASP.NET

Protezione delle applicazioni ASP.NET in ambienti host