Condividi tramite


Protezione di file di definizione del browser

Aggiornamento: novembre 2007

I file di definizione del browser (estensione BROWSER) contengono informazioni sulle funzionalità di classi di browser (ad esempio Internet Explorer) e di browser specifici (ad esempio Internet Explorer 6.0). Le informazioni contenute nei file BROWSER vengono utilizzate da ASP.NET in fase di esecuzione per determinare quale browser ha effettuato la richiesta, le funzionalità del browser e le modalità di visualizzazione dei tag per il browser. Per ulteriori informazioni, vedere Schema del file di definizione del browser (elemento browsers).

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).

Nota:

I file di definizione del browser sono stati introdotti con .NET Framework versione 2.0. Nelle versioni precedenti di .NET Framework veniva utilizzato l'elemento browserCaps per specificare le definizioni del browser nei file di configurazione.

Protezione dei file di definizione del browser

Tutte le funzionalità del browser, comprese le classi .NET Framework e i file di definizione del browser, richiedono l'attendibilità parziale a livello di applicazione e l'attendibilità totale a livello globale. L'assembly di definizione del browser globale viene firmato con una chiave di computer univoca prima dell'inserimento nella Global Assembly Cache e non può essere alterato. I file di definizione del browser nella directory %SystemRoot%\Microsoft.NET\Framework\versione\CONFIG\Browsers sono protetti tramite elenchi di controllo di accesso (ACL) e richiedono privilegi amministrativi per la modifica.

Directory dei file di definizione del browser

La directory Browser globale e la sottodirectory a livello di applicazione App_Browsers devono contenere solo file con estensione BROWSER, in quanto solo questo tipo di file viene compilato in base alle funzionalità del browser ASP.NET. Inoltre, ASP.NET impedisce che i file in queste directory vengano eseguiti dal server Web e acceduti dal codice di altre applicazioni.

Elenchi di controllo di accesso dei file di definizione del browser

Nella seguente tabella sono riportati gli elenchi di controllo di accesso predefiniti impostati per i file BROWSER presenti nella directory %SystemRoot%\Microsoft.NET\Framework\versione\CONFIG\Browsers. Questi elenchi sono impostati anche nella directory stessa, ma comprendono autorizzazioni di modifica per il gruppo CREATOR OWNER. La directory è di sola lettura.

Account Windows

Autorizzazioni

Administrators

Controllo completo

Account computer ASP.NET (<server>\ASPNET)

Lettura ed esecuzione

CREATOR OWNER

Controllo completo

IIS_WPG (<server>\IIS_WPG)

Lettura ed esecuzione

LOCAL SERVICE

Lettura ed esecuzione

NETWORK SERVICE

Lettura ed esecuzione

Power Users (<server>\Power Users)

Modifica

SYSTEM

Controllo completo

Users (<server>\Users)

Lettura ed esecuzione

Nella seguente tabella sono riportati gli elenchi di controllo di accesso da impostare nei file BROWSER a livello di applicazione presenti nella sottodirectory App_Browsers.

Account Windows

Autorizzazioni

Administrators

Controllo completo

IIS_WPG (<server>\IIS_WPG)

Lettura ed esecuzione

INTERACTIVE

Lettura

Account guest Internet (<server>\IUSR_<server>)

Lettura

NETWORK

Lettura

NETWORK SERVICE

Lettura

SYSTEM

Controllo completo

Users (<server>\Users)

Lettura ed esecuzione

Account Strumento Amministrazione sito Web di ASP.NET

Speciale

Aggiunta dei file di definizione del browser

Non scaricare o installare file di definizione del browser finché non si verifica l'attendibilità dell'origine. Ad esempio, esaminare un nuovo file di definizione del browser per verificare se viene fatto riferimento a spazi dei nomi non conosciuti in uno dei seguenti attributi:

  • Attributo markupTextWriterType dell'elemento controlAdapters.

  • Attributo value dell'elemento capability.

  • Attributi controlType e adapterType dell'elemento adapter.

Per informazioni sugli elementi e gli attributi validi, vedere Schema del file di definizione del browser (elemento browsers).

Modifica dei file di definizione del browser

Se si aggiungono nuovi file di definizione del browser alla directory globale o si apportano modifiche ai file di definizione del browser globali, tali modifiche non avranno effetto finché l'insieme delle funzionalità del browser non viene ricompilato manualmente utilizzando lo strumento Aspnet_regbrowsers.exe, disponibile nella cartella %SystemRoot%\Microsoft.NET\Framework\versione o si esegue la ricompilazione a livello di codice mediante la classe BrowserCapabilitiesCodeGenerator.

Non è tuttavia necessario ricompilare modifiche apportate a definizioni del browser a livello di applicazione, in quanto tali definizioni vengono ricompilate e riapplicate dinamicamente.

Protezione dei file di definizione del browser in un ambiente di hosting condiviso

In un ambiente di hosting condiviso esiste il rischio potenziale che utenti malintenzionati modifichino le impostazioni dei file di definizione del browser intervenendo direttamente su tali file oppure mediante API di configurazione o altri strumenti di configurazione e amministrazione. Per limitare tale rischio, definire elenchi di controllo di accesso sicuri per i file di definizione del browser. Poiché il contenuto delle directory dei file di definizione del browser viene compilato, tali directory devono essere protette come qualsiasi altra directory di codice nell'applicazione. Se l'amministratore dell'host impedisce a un utente di aggiungere codice a un'applicazione, deve anche impedirgli di aggiungere file di definizione del browser.

Blocco di un file di definizione del browser

Un file di definizione del browser può essere bloccato soltanto da ripetuti tentativi di salvataggio del file o di apertura di un handle di file. Sebbene un utente malintenzionato possa tentare di bloccare i file di definizione del browser nella directory %SystemRoot%\Microsoft.NET\Framework\versione\CONFIG\Browsers, il blocco di un file di definizione del browser richiede l'attendibilità completa, che è disattivata in ASP.NET per impostazione predefinita.

Utilizzo dell'API di configurazione per la lettura di file arbitrari

Le classi dell'API di configurazione della definizione del browser non possono leggere directory che non appartengono al dominio applicazione o file con estensione diversa da BROWSER.

Memorizzazione nella cache delle funzionalità del browser

In fase di esecuzione, i dati contenuti nei file di definizione del browser vengono uniti in un insieme di browser conosciuti in un oggetto BrowserCapabilitiesFactory. Quando viene effettuata una richiesta, ASP.NET identifica il browser richiedente in base all'intestazione della richiesta e compila un oggetto HttpCapabilitiesBase che corrisponde al browser richiedente. L'oggetto viene memorizzato nella cache e potrà essere riutilizzato per un'altra richiesta effettuata dallo stesso browser.

Un client malintenzionato potrebbe sferrare un attacco di tipo Denial of Service inondando il server Web di richieste con intestazioni diverse, che causerebbero la generazione e la memorizzazione nella cache di oggetti contenenti funzionalità del browser diverse, ossia un oggetto per ciascuna richiesta. Per limitare questo rischio, configurare l'attributo userAgentCacheKeyLength dell'elemento Elemento browserCaps (schema delle impostazioni ASP.NET) nel file Machine.config o in un file Web.config per definire la lunghezza in caratteri da utilizzare come chiave per identificare gli oggetti contenenti le funzionalità memorizzati nella cache interna. Il valore predefinito è 64, ma è possibile impostare un valore inferiore per rendere più probabile l'individuazione di un browser corrispondente nella cache, riducendo il carico della cache.

Eccezioni

Per impedire che le informazioni riservate risultino visibili a origini indesiderate, configurare l'applicazione in modo che i messaggi di errore dettagliati non vengano visualizzati o vengano visualizzati solo quando il client è il server Web stesso. Per ulteriori informazioni, vedere Elemento customErrors (schema delle impostazioni ASP.NET).

Log eventi

Se il server esegue 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 per impedire un attacco di tipo Denial of Service. Per ulteriori informazioni sulla configurazione dei log eventi, cercare "Visualizzatore eventi" della Guida in linea e supporto tecnico di Windows.

Vedere anche

Attività

Procedura: rilevare tipi di browser in pagine Web ASP.NET

Concetti

Controlli server Web ASP.NET e funzionalità del browser

Protezione di file di definizione del browser

Scenari di configurazione ASP.NET

Cenni preliminari sul filtro di periferica ASP.NET

Cenni preliminari sull'architettura del comportamento adattivo di un controllo

Cenni preliminari sullo sviluppo di pagine Web mobili ASP.NET

Protezione della configurazione di ASP.NET

Riferimenti

Schema del file di definizione del browser (elemento browsers)

Altre risorse

Sicurezza dei siti Web ASP.NET