Cenni preliminari sulla sicurezza in Windows Form

Prima della comparsa di .NET Framework, qualsiasi codice in esecuzione sul computer di un utente aveva gli stessi diritti o le stesse autorizzazioni di accesso alle risorse che aveva un utente del computer. Se ad esempio all'utente era consentito l'accesso al file system o a un database, anche il codice aveva accesso al file system o al database. Anche se può essere accettabile per il codice contenuto negli eseguibili installati esplicitamente dall'utente nel computer locale, questa situazione non può essere accettabile per il codice potenzialmente dannoso proveniente da Internet o da una Intranet locale. A questo tipo di codice, infatti, non deve essere consentito l'accesso alle risorse del computer senza l'autorizzazione esplicita dell'utente.

In .NET Framework è stata introdotta un'infrastruttura, denominata sicurezza per l'accesso al codice, che consente di differenziare le autorizzazioni, o i diritti, del codice rispetto a quelli dell'utente. Per impostazione predefinita, il codice proveniente da Internet e dalla Intranet può essere eseguito soltanto in un ambiente parzialmente attendibile. Le applicazioni parzialmente attendibili sono soggette a una serie di restrizioni, ad esempio non possono accedere al disco rigido locale né eseguire codice non gestito. Per controllare le risorse a cui il codice può accedere, in .NET Framework viene utilizzata l'identità del codice, ovvero la provenienza, l'eventuale presenza di Assembly con nomi sicuri, la presenza di una firma con un certificato e così via.

Grazie alla tecnologia ClickOnce, utilizzata per la distribuzione delle applicazioni Windows Form, risulta molto più semplice sviluppare applicazioni da eseguire in un ambiente parzialmente attendibile, in un ambiente con attendibilità totale o in un ambiente parzialmente attendibile con autorizzazioni elevate. Utilizzando alcune delle funzionalità offerte da ClickOnce, ad esempio l'elevazione delle autorizzazioni e la distribuzione di applicazioni attendibili, l'applicazione può richiedere automaticamente che l'utente disponga di autorizzazioni elevate o di attendibilità totale.

Informazioni sulla sicurezza in .NET Framework

La sicurezza per l'accesso al codice consente di assegnare al codice gradi di attendibilità diversi, in base all'origine e ad altri aspetti dell'identità del codice. Per ulteriori informazioni sulle evidenze impiegate da Common Language Runtime per determinare i criteri di sicurezza, vedere Evidenza. Questo strumento consente di proteggere i computer dal codice dannoso e il codice attendibile dai tentativi, sia intenzionali che accidentali, di compromissione della sicurezza. La sicurezza per l'accesso al codice assicura inoltre un controllo maggiore sulle azioni che possono essere eseguite dall'applicazione, poiché consente di assegnare a quest'ultima soltanto le autorizzazioni effettivamente necessarie. Questo tipo di sicurezza ha effetto su tutto il codice gestito destinato a Common Language Runtime, anche se tale codice non effettua un'unica verifica delle autorizzazioni di sicurezza per l'accesso al codice. Per ulteriori informazioni sulla sicurezza in .NET Framework, vedere Concetti principali sulla sicurezza e Nozioni fondamentali sulla sicurezza per l’accesso al codice.

Se l'utente esegue un file eseguibile di Windows Form direttamente da un server Web o una condivisione file, il livello di attendibilità concesso all'applicazione dipende dalla posizione in cui si trova il codice e dal modo in cui è stata avviata. Quando viene eseguita, un'applicazione viene automaticamente valutata e riceve un set di autorizzazioni denominato dal Common Language Runtime. Per impostazione predefinita, al codice proveniente dal computer locale viene concesso il set di autorizzazioni Completamente attendibile, al codice proveniente da una rete locale viene concesso il set di autorizzazioni Intranet locale e al codice proveniente da Internet viene concesso il set di autorizzazioni Internet.

Nota

In .NET Framework versione 1.0 Service Pack 1 e Service Pack 2, al gruppo di codice dell'area Internet viene assegnato il set di autorizzazioni Nessuna. In tutte le altre versioni di .NET Framework, al gruppo di codice dell'area Internet viene assegnato il set di autorizzazioni Internet.

Le autorizzazioni predefinite concesse in ciascuno di questi insiemi sono elencate nell'argomento Criteri di sicurezza predefiniti. A seconda delle autorizzazioni ricevute, l'applicazione viene eseguita correttamente o genera un'eccezione di sicurezza.

Molte applicazioni Windows Form verranno distribuite mediante ClickOnce. Gli strumenti utilizzati per generare una distribuzione ClickOnce prevedono impostazioni di sicurezza predefinite differenti rispetto a quelle illustrate precedentemente. Per ulteriori informazioni, vedere più avanti.

Poiché i criteri di sicurezza possono essere modificati, è possibile che le autorizzazioni effettive concesse all'applicazione siano diverse dai valori predefiniti. È pertanto possibile che l'applicazione disponga di un'autorizzazione su un computer ma non su un altro.

Sviluppo di applicazioni Windows Form più protette

La sicurezza è importante in tutte le fasi di sviluppo delle applicazioni. Iniziare leggendo e seguendo Linee guida per la generazione di codice sicuro.

Quindi, decidere se l'applicazione deve essere eseguita in un ambiente completamente attendibile o parzialmente attendibile. L'esecuzione dell'applicazione in un ambiente completamente attendibile rende più semplice l'accesso alle risorse sul computer locale, ma espone l'applicazione e i relativi utenti a rischi di sicurezza maggiori nel caso in cui l'applicazione non è stata progettata e sviluppata rispettando rigorosamente le indicazioni per la generazione di codice protetto. L'esecuzione dell'applicazione in un ambiente parzialmente attendibile rende più semplice lo sviluppo di un'applicazione più protetta e riduce la maggior parte dei rischi, ma richiede una pianificazione più accurata sulla modalità di implementazione di determinate funzionalità.

Se si sceglie di creare un'applicazione parzialmente attendibile, ovvero con set di autorizzazioni Internet o Intranet locale, occorre decidere come l'applicazione deve comportarsi in tale ambiente. In Windows Form sono disponibili modi alternativi più protetti per implementare le funzionalità in un ambiente parzialmente attendibile. Alcune parti dell'applicazione, ad esempio l'accesso ai dati, possono essere progettate e scritte in modo differente per i due ambienti (parzialmente attendibile e completamente attendibile). Alcune funzionalità di Windows Form, ad esempio Impostazioni applicazione, sono progettate per funzionare in un ambiente parzialmente attendibile. Per ulteriori informazioni, vedere Cenni preliminari sulle impostazioni delle applicazioni.

Se l'applicazione richiede più autorizzazioni rispetto a quelle consentite in un ambiente parzialmente attendibile, ma non si desidera eseguirla in un ambiente completamente attendibile, è possibile eseguire l'applicazione in un ambiente parzialmente attendibile effettuando al tempo stesso l'asserzione soltanto delle autorizzazioni aggiuntive necessarie. Se ad esempio si desidera eseguire l'applicazione in un ambiente parzialmente attendibile ma concedere l'accesso in sola lettura a una directory nel file system dell'utente, è possibile richiedere l'autorizzazione FileIOPermission soltanto per tale directory. Utilizzato correttamente, questo approccio consente di aumentare le capacità all'applicazione riducendo al minimo i rischi di sicurezza per gli utenti.

Quando si sviluppa un'applicazione che verrà eseguita in un ambiente parzialmente attendibile, occorre tenere traccia delle autorizzazioni indispensabili all'applicazione e di quelle che potrebbe eventualmente utilizzare. Quando si conoscono tutte le autorizzazioni, è necessario effettuare una richiesta dichiarativa per le autorizzazioni al livello di applicazione. In questo modo è possibile indicare al runtime di .NET Framework le autorizzazioni necessarie all'applicazione e quelle indesiderate. Per ulteriori informazioni sulla richiesta di autorizzazioni, vedere Richiesta di autorizzazioni e Richieste di autorizzazioni.

Quando si richiedono autorizzazioni facoltative, è necessario gestire le eccezioni di sicurezza che verranno generate nel caso in cui l'applicazione esegua un'azione che richiede autorizzazioni non concesse. La corretta gestione dell'eccezione SecurityException assicurerà che l'esecuzione dell'applicazione non verrà interrotta. L'eccezione può essere utilizzata dall'applicazione per determinare se è necessario disabilitare una funzionalità per l'utente. Un'applicazione, ad esempio, può disabilitare l'opzione di menu Salva se l'autorizzazione necessaria non viene concessa.

In alcuni casi, è difficile sapere se è stata effettuata l'asserzione di tutte le autorizzazioni appropriate. È possibile, ad esempio, che una chiamata a metodo che a prima vista potrebbe sembrare innocua, a un certo punto dell'esecuzione richieda l'accesso al file system. Se l'applicazione non viene distribuita con tutte le autorizzazioni necessarie, è possibile che l'esecuzione risulti corretta sul proprio computer ma non dopo la distribuzione. Sia in .NET Framework 2.0 SDK che in Visual Studio 2005 sono disponibili strumenti per il calcolo delle autorizzazioni richieste da un'applicazione, rispettivamente lo strumento da riga di comando MT.exe e la funzionalità Elabora autorizzazioni di Visual Studio. Per ulteriori informazioni, vedere Procedura: determinare le autorizzazioni per un'applicazione ClickOnce e Procedura: determinare le autorizzazioni per un'applicazione ClickOnce.

Negli argomenti riportati di seguito vengono illustrate le funzionalità di sicurezza aggiuntive di Windows Form.

Argomento

Descrizione

Viene descritto come accedere ai file e ai dati in un ambiente parzialmente attendibile.

Viene descritto come accedere alle funzionalità di stampa in un ambiente parzialmente attendibile.

Viene descritto come modificare le finestre, mediante gli Appunti, ed eseguire chiamate al codice non gestito in un ambiente parzialmente attendibile.

Distribuzione di un'applicazione con le autorizzazioni appropriate

La distribuzione di un'applicazione Windows Form su un computer client viene in genere eseguita mediante ClickOnce, una tecnologia di distribuzione che consente di descrivere tutti i componenti che devono essere eseguiti dall'applicazione. ClickOnce utilizza file XML denominati manifesti per descrivere gli assembly e i file che costituiscono l'applicazione nonché le autorizzazioni richieste dall'applicazione.

In ClickOnce vengono utilizzate due tecnologie per la richiesta di autorizzazioni elevate in un computer client, entrambe basate sull'utilizzo di certificati Authenticode. L'utilizzo dei certificati fornisce una discreta garanzia agli utenti che l'applicazione provenga da una fonte attendibile.

Queste tecnologie sono descritte nella tabella seguente.

Tecnologia per autorizzazioni elevate

Descrizione

Elevazione delle autorizzazioni

La prima volta che si esegue l'applicazione, viene visualizzata all'utente una finestra di dialogo di sicurezza in cui vengono fornite alcune informazioni sull'editore dell'applicazione, in modo che l'utente possa prendere una decisione consapevole sull'assegnazione di ulteriori autorizzazioni all'applicazione.

Distribuzione di applicazioni attendibili

Questa tecnologia richiede che un amministratore di sistema esegua, una sola volta, l'installazione del certificato Authenticode di un editore in un computer client. Da questo punto in poi, le eventuali applicazioni firmate con il certificato verranno considerate attendibili e potranno essere eseguite con attendibilità totale sul computer locale senza che venga visualizzata alcuna richiesta all'utente.

La tecnologia più adatta dipenderà dallo specifico ambiente di distribuzione. Per ulteriori informazioni, vedere Scelta di una strategia di distribuzione ClickOnce.

Per impostazione predefinita, le applicazioni ClickOnce distribuite con gli strumenti di Visual Studio o .NET Framework 2.0 SDK (Mage.exe e MageUI.exe) sono configurate per l'esecuzione su un computer client con attendibilità totale. Se si desidera distribuire l'applicazione in un ambiente parzialmente attendibile o assegnando soltanto alcune autorizzazioni aggiuntive, sarà necessario modificare le impostazioni predefinite. A questo scopo, è possibile utilizzare Visual Studio o lo strumento di .NET Framework 2.0 SDK (MageUI.exe) al momento della configurazione della distribuzione. Per ulteriori informazioni sull'utilizzo di MageUI.exe, vedere Procedura dettagliata: Distribuzione di un'applicazione ClickOnce dalla riga di comando. Per ulteriori informazioni, vedere Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce e Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce e Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce e Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce.

Per ulteriori informazioni sugli aspetti di sicurezza di ClickOnce e sull'elevazione delle autorizzazioni, vedere Protezione di applicazioni ClickOnce. Per ulteriori informazioni sulla distribuzione di applicazioni attendibili, vedere Cenni preliminari sulla distribuzione di applicazioni attendibili.

Verifica dell'applicazione

Se l'applicazione Windows Form è stata distribuita mediante Visual Studio, è possibile attivare il debug in un ambiente parzialmente attendibile o con un set di autorizzazioni limitato dall'ambiente di sviluppo. Per ulteriori informazioni, vedere Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate e Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate e Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate e Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate.

Vedere anche

Riferimenti

Mage.exe (Strumento per la generazione e la modifica di manifesti)

MageUI.exe (Strumento per la generazione e la modifica di manifesti, client grafico)

Concetti

Nozioni fondamentali sulla sicurezza per l’accesso al codice

Sicurezza e distribuzione di ClickOnce

Cenni preliminari sulla distribuzione di applicazioni attendibili

Altre risorse

Sicurezza di Windows Form