Protezione delle proprietà dei profili

Aggiornamento: novembre 2007

È possibile utilizzare la funzionalità del profilo ASP.NET per archiviare e richiamare le impostazioni dell'utente in un'origine dati come, ad esempio, un database. Le proprietà e i gruppi dei profili utente vengono specificati nel file di configurazione dell'applicazione. In fase di esecuzione, ASP.NET utilizza le informazioni di configurazione per generare dinamicamente una classe con funzioni di accesso fortemente tipizzate per ogni proprietà del profilo. La classe viene quindi esposta utilizzando la proprietà statica Profile. I valori delle proprietà del profilo vengono archiviati dal provider di profili in un'origine dati, in XML non crittografato o in forma binaria serializzata.

È possibile migliorare la protezione dell'applicazione seguendo i suggerimenti per il codice e la configurazione. Inoltre è importante aggiornare continuamente il server Web dell'applicazione con gli aggiornamenti più recenti di protezione per Microsoft Windows e Microsoft Internet Information Services (IIS) e con tutti gli aggiornamenti di Microsoft SQL Server o qualsiasi altra origine dati del profilo.

Per informazioni più dettagliate sui suggerimenti per la scrittura del codice e la protezione delle applicazioni, consultare il testo Writing Secure Code di Michael Howard e David LeBlanc nonché le indicazioni fornite in Microsoft Patterns and Practices all'indirizzo (https://www.microsoft.com/resources/practices/default.mspx) (informazioni in lingua inglese).

Configurazione della protezione del profilo

La funzionalità del profilo ASP.NET è attivata per impostazione predefinita. Benché le opzioni di configurazione siano impostate su valori predefiniti che garantiscono la massima protezione, si consiglia comunque di disattivare la funzionalità del profilo utente se questa non è necessaria per l'applicazione. Per informazioni sulle impostazioni di configurazione del profilo e sui relativi valori predefiniti, vedere Elemento profile (schema delle impostazioni ASP.NET). Per impostazione predefinita, l'identificazione anonima, che può essere impostata nelle proprietà del profilo, è disattivata. Per informazioni sulle impostazioni di configurazione dell'identificazione anonima e sui relativi valori predefiniti, vedere Elemento anonymousIdentification (schema delle impostazioni ASP.NET).

Protezione dei valori di configurazione

Durante l'archiviazione di informazioni riservate in un file di configurazione, si consiglia di crittografare i valori riservati utilizzando la configurazione protetta. Tra le informazioni particolarmente riservate sono incluse le chiavi di crittografia archiviate nell'elemento di configurazione machineKey e le stringhe di connessione all'origine dati nell'elemento di configurazione connectionStrings. Per ulteriori informazioni, vedere Crittografia delle informazioni di configurazione utilizzando la configurazione protetta.

Protezione delle connessioni a un'origine dati dei profili

Stringhe di connessione

Come già accennato, è importante proteggere le informazioni riservate incluse in una stringa di connessione utilizzata per comunicare con un computer su cui sia in esecuzione SQL Server o un'altra origine dati. Per garantire la protezione della connessione al database, è opportuno crittografare le informazioni relative alla stringa di connessione incluse nella configurazione utilizzando la configurazione protetta. Per ulteriori informazioni, vedere Crittografia delle informazioni di configurazione utilizzando la configurazione protetta.

Connessione a SQL Server tramite la protezione integrata

Per eseguire la connessione a computer su cui sia in esecuzione SQL Server, si consiglia di utilizzare la protezione integrata per evitare che la stringa di connessione venga danneggiata e che le informazioni relative all'ID utente e alla password risultino esposte. Quando si definisce una connessione che utilizza la protezione integrata per connettersi a un computer su cui sia in esecuzione SQL Server, il provider del profilo ripristina l'identità del processo. Si consiglia di verificare che l'identità del processo che esegue ASP.NET, come, ad esempio, il pool di applicazioni, sia l'account predefinito del processo o un account utente con autorizzazioni limitate. Per ulteriori informazioni, vedere Rappresentazione ASP.NET.

Autorizzazioni del database SQL Server

Il database SQL Server in cui sono archiviate per impostazione predefinita le informazioni sul profilo include visualizzazioni e ruoli di database che consentono di limitare l'accesso degli utenti ai soli privilegi necessari per l'applicazione. Si consiglia di assegnare i privilegi minimi all'ID utente che si collega al database dei profili SQL Server. Per ulteriori informazioni, vedere Ruoli e viste nel database dei servizi dell'applicazione per SQL Server.

Protezione di dati riservati nell'origine dati dei profili

Il provider di profili utente predefinito non crittografa i valori archiviati nell'origine dati dei profili. Si consiglia di crittografare tutti i dati riservati prima di archiviarli nell'origine dati dei profili, per evitare di esporre i dati riservati se l'origine dati è danneggiata. I dati riservati possono essere crittografati prima dell'archiviazione del valore nella proprietà del profilo oppure si possono estendere le classi ProfileBase o ProfileProvider per consentire la crittografia.

Impedire la condivisione di dati di profili anonimi tra applicazioni

Se si attiva l'identificazione anonima per un'applicazione e per le proprietà del profilo utilizzate da quell'applicazione, la proprietà del profilo anonimo rischia di essere esposta a un'altra applicazione. Questa condizione può verificarsi se l'attributo di identificazione anonima cookiePath è impostato su un percorso che include più applicazioni e quando diverse applicazioni sono presenti in un dominio comune.

Se si utilizza l'identificazione anonima con i profili utente e si vogliono ripartire gli utenti anonimi tra varie applicazioni, si consiglia di identificare chiavi di crittografia diverse nell'elemento machineKey per ogni applicazione, impostare l'ambito del cookie di identificazione anonima per un'applicazione specifica e impostare la proprietà ApplicationName su un valore diverso per ogni applicazione.

Protezione di pagine Web che utilizzano profili

Le pagine dell'applicazione che utilizzano dati riservati archiviati nelle proprietà del profilo devono essere protette tramite i meccanismi di protezione Web standard, ad esempio utilizzando SSL e specificando che gli utenti, per eseguire operazioni critiche quali l'aggiornamento delle informazioni utente o l'eliminazione degli utenti, devono aver effettuato l'accesso. Inoltre, evitare di archiviare dati riservati nei cookie.

Protezione contro gli attacchi di tipo Denial of Service

I metodi della classe ProfileManager che eseguono aggiornamenti o operazioni di ricerca a esecuzione prolungata possono ridurre la capacità di risposta dell'origine dati del profilo quando vengono chiamati contemporaneamente da più client. Per ridurre i rischi di un attacco Denial of Service, limitare l'accesso alle pagine ASP.NET in cui sono implementate ricerche o aggiornamenti del database accessibili ai soli utenti con privilegi di amministratore.

Messaggi di errore ed eventi

Eccezioni

Per impedire che le informazioni riservate siano esposte, configurare l'applicazione in modo che i messaggi di errore dettagliati non vengano visualizzati o che vengano visualizzati solo se l'applicazione è in esecuzione locale su server Web. Per ulteriori informazioni, vedere l'elemento di configurazione customErrors.

Log eventi

Questa funzionalità del profilo ASP.NET registra determinate condizioni di errore utilizzando il monitoraggio dello stato ASP.NET che, per impostazione predefinita, archivia le informazioni nel log eventi. Se sul computer server è in esecuzione la famiglia Windows Server 2003, è possibile migliorare la protezione dell'applicazione impostando la protezione del log eventi e definendo i parametri relativi alla dimensione, al mantenimento e ad altre proprietà del log eventi per impedire un attacco indiretto di tipo Denial of Service.

Informazioni di analisi

È possibile configurare il server Web per eseguire l'analisi di alcune azioni relative alla funzionalità del profilo e per archiviare le informazioni di analisi in un file log. Poiché nel file log dell'analisi possono essere archiviate anche informazioni riservate, ad esempio i nomi utente, è necessario che la possibilità di attivare la funzionalità di analisi, nonché di configurare il percorso del file log di analisi e di accedervi, sia limitata ai soli amministratori.

Provider di profili personalizzato

Quando si crea un provider di profili personalizzato per l'accesso al database, è necessario assicurarsi di seguire i suggerimenti relativi alla protezione per evitare attacchi intrusivi nel codice SQL. Quando si utilizza un provider di profili personalizzati, verificare che per tale provider siano stati implementati i suggerimenti relativi alla protezione.

Vedere anche

Concetti

Cenni preliminari sulle proprietà dei profili ASP.NET

Altre risorse

Sicurezza dei siti Web ASP.NET