Cenni preliminari sulla sicurezza in Windows FormSecurity in Windows Forms Overview

Prima del rilascio di .NET Framework.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.Before the release of the .NET Framework.NET Framework, all code running on a user's computer had the same rights or permissions to access resources that a user of the computer had. 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.For example, if the user was allowed to access the file system, the code was allowed to access the file system; if the user was allowed to access a database, the code was allowed to access that database. Anche se ciò può essere accettabile per il codice contenuto negli eseguibili installati esplicitamente dall'utente nel computer locale, non è altrettanto accettabile per quanto riguarda il codice potenzialmente dannoso proveniente da Internet o da una Intranet locale.Although these rights or permissions may be acceptable for code in executables that the user has explicitly installed on the local computer, they may not be acceptable for potentially malicious code coming from the Internet or a local Intranet. A questo tipo di codice, infatti, non deve essere consentito l'accesso alle risorse del computer dell'utente senza autorizzazione esplicita.This code should not be able to access the user's computer resources without permission.

In .NET Framework.NET Framework è stata introdotta un'infrastruttura, denominata sicurezza dall'accesso di codice, che consente di differenziare le autorizzazioni, o i diritti, del codice rispetto a quelli dell'utente.The .NET Framework.NET Framework introduces an infrastructure called Code Access Security that lets you differentiate the permissions, or rights, that code has from the rights that the user has. Per impostazione predefinita, il codice proveniente da Internet e dalla Intranet può essere eseguito soltanto in un ambiente parzialmente attendibile.By default, code coming from the Internet and the Intranet can only run in what is known as partial trust. 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.Partial trust subjects an application to a series of restrictions: among other things, an application is restricted from accessing the local hard disk, and cannot run unmanaged code. Per controllare le risorse a cui il codice può accedere, in .NET Framework.NET Framework viene usata l'identità del codice, ovvero la provenienza, l'eventuale presenza di Assembly con nome sicuro, la presenza di una firma con un certificato e così via.The .NET Framework.NET Framework controls the resources that code is allowed to access based on the identity of that code: where it came from, whether it has a Strong-Named Assemblies, whether it is signed with a certificate, and so on.

Grazie alla tecnologia ClickOnceClickOnce, usata 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.ClickOnceClickOnce technology, which you use to deploy Windows Forms applications, helps make it easier for you to develop applications that run in partial trust, in full trust, or in partial trust with elevated permissions. Usando alcune delle funzionalità offerte da ClickOnceClickOnce, 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.ClickOnceClickOnce provides features such as Permission Elevation and Trusted Application Deployment so that your application can request full trust or elevated permissions from the local user in a responsible manner.

Informazioni sulla sicurezza in .NET FrameworkUnderstanding Security in the .NET Framework

La sicurezza dall'accesso di codice consente di assegnare al codice gradi di attendibilità diversi, in base all'origine e ad altri aspetti dell'identità del codice.Code access security allows code to be trusted to varying degrees, depending on where the code originates and on other aspects of the code's identity. Per altre informazioni sulle evidenze impiegate da Common Language Runtime per determinare i criteri di sicurezza, vedere Evidenza.For more information about the evidence the common language runtime uses to determine security policy, see Evidence. Questo strumento consente di proteggere i computer dal codice dannoso e il codice attendibile dai tentativi, sia intenzionali che accidentali, di compromissione della sicurezza.It helps protect computer systems from malicious code and helps protect trusted code from intentionally or accidentally compromising security. La sicurezza dall'accesso di 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.Code access security also gives you more control over what actions your application can perform, because you can specify only those permissions you need your application to have. 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 di codice.Code access security affects all managed code that targets the common language runtime, even if that code does not make a single code-access-security permission check. Per altre informazioni sulla sicurezza in .NET Framework.NET Framework, vedere Concetti principali sulla sicurezza e Nozioni fondamentali sulla sicurezza per l'accesso al codice.For more information about security in the .NET Framework.NET Framework, see Key Security Concepts and Code Access Security Basics.

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.If the user run a Windows Forms executable file directly off of a Web server or a file share, the degree of trust granted to your application depends on where the code resides, and how it is started. Quando viene eseguita, un'applicazione viene automaticamente valutata e riceve un set di autorizzazioni denominato da Common Language Runtime.When an application runs, it is automatically evaluated and it receives a named permission set from the 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.By default, the code from the local computer is granted the Full Trust permission set, code from a local network is granted the Local Intranet permission set, and code from the Internet is granted the Internet permission set.

Nota

In .NET Framework.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 the .NET Framework.NET Framework version 1.0 Service Pack 1 and Service Pack 2, the Internet zone code group receives the Nothing permission set. In tutte le altre versioni di .NET Framework.NET Framework, al gruppo di codice dell'area Internet viene assegnato il set di autorizzazioni Internet.In all other releases of the .NET Framework.NET Framework, the Internet zone code group receives the Internet permissions set.

Le autorizzazioni predefinite concesse in ciascuno di questi insiemi sono elencate nell'argomento Criteri di sicurezza predefiniti.The default permissions granted in each of these permission sets are listed in the Default Security Policy topic. A seconda delle autorizzazioni ricevute, l'applicazione viene eseguita correttamente o genera un'eccezione di sicurezza.Depending on the permissions that the application receives, it either runs correctly or generates a security exception.

Molte applicazioni Windows Form verranno distribuite mediante ClickOnceClickOnce.Many Windows Forms applications will be deployed using ClickOnceClickOnce. Gli strumenti impiegati per generare una distribuzione ClickOnceClickOnce prevedono impostazioni di sicurezza predefinite differenti da quelle illustrate precedentemente.The tools used for generating a ClickOnceClickOnce deployment have different security defaults than what was discussed earlier. Per altre informazioni, vedere più avanti.For more information, see the following discussion.

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.The actual permissions granted to your application can be different from the default values, because the security policy can be modified; this means that your application can have permission on one computer, but not on another.

Sviluppo di applicazioni Windows Form più sicureDeveloping a More Secure Windows Forms Application

La sicurezza è importante in tutte le fasi di sviluppo delle applicazioni.Security is important in all steps of application development. Iniziare consultando e seguendo le Linee guida per la generazione di codice sicuro.Start by reviewing and following the Secure Coding Guidelines.

Quindi, decidere se l'applicazione deve essere eseguita in un ambiente completamente attendibile o parzialmente attendibile.Next, decide whether your application must run in full trust, or whether it should run in partial trust. L'esecuzione dell'applicazione in un ambiente completamente attendibile rende più semplice l'accesso alle risorse nel computer locale, ma espone l'applicazione e i relativi utenti a rischi di sicurezza maggiori nel caso in cui l'applicazione non sia stata progettata e sviluppata rispettando rigorosamente le linee guida per la generazione di codice sicuro.Running your application in full trust makes it easier to access resources on the local computer, but exposes your application and its users to high security risks if you do not design and develop your application strictly according to the Secure Coding Guidelines topic. L'esecuzione dell'applicazione in un ambiente parzialmente attendibile semplifica lo sviluppo di applicazioni sicure e riduce la maggior parte dei rischi, ma richiede una pianificazione più accurata sulle modalità di implementazione di determinate funzionalità.Running your application in partial trust makes it easier to develop a more secure application and reduces much risk, but requires more planning in how to implement certain features.

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.If you choose partial trust (that is, either the Internet or Local Intranet permission sets), decide how you want your application to behave in this environment. In Windows Form sono disponibili modi alternativi più sicuri per implementare le funzionalità in un ambiente parzialmente attendibile.Windows Forms provides alternative, more secure ways to implement features when in a semi-trusted environment. 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).Certain parts of your application, such as data access, can be designed and written differently for both partial trust and full trust environments. Alcune funzionalità di Windows Form, ad esempio Impostazioni applicazione, sono progettate per funzionare in un ambiente parzialmente attendibile.Some Windows Forms features, such as application settings, are designed to work in partial trust. Per altre informazioni, vedere Panoramica delle impostazioni delle applicazioni.For more information, see Application Settings Overview.

Se l'applicazione richiede più autorizzazioni rispetto a quelle consentite in un ambiente parzialmente attendibile, ma non la si vuole eseguire 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.If your application needs more permissions than partial trust allows, but you do not want to run in full trust, you can run in partial trust while asserting only those additional permissions you need. Se ad esempio si vuole 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.For example, if you want to run in partial trust, but must grant your application read-only access to a directory on the user's file system, you can request FileIOPermission only for that directory. Se usato correttamente, questo approccio consente di aumentare le capacità dell'applicazione riducendo al minimo i rischi di sicurezza per gli utenti.Used correctly, this approach can give your application increased functionality and minimize security risks to your users.

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 usare facoltativamente.When you develop an application that will run in partial trust, keep track of what permissions your application must run and what permissions your application could optionally use. Quando si conoscono tutte le autorizzazioni, è necessario effettuare una richiesta dichiarativa per le autorizzazioni a livello di applicazione.When all the permissions are known, you should make a declarative request for permission at the application level. In questo modo è possibile indicare al runtime di .NET Framework.NET Framework le autorizzazioni necessarie all'applicazione e quelle indesiderate.Requesting permissions informs the .NET Framework.NET Framework run time about which permissions your application needs and which permissions it specifically does not want. Per altre informazioni sulla richiesta di autorizzazioni, vedere Richiesta di autorizzazioni.For more information about requesting permissions, see Requesting Permissions.

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.When you request optional permissions, you must handle security exceptions that will be generated if your application performs an action that requires permissions not granted to it. La corretta gestione dell'eccezione SecurityException assicurerà che l'esecuzione dell'applicazione non venga interrotta.Appropriate handling of the SecurityException will ensure that your application can continue to operate. L'eccezione può essere usata dall'applicazione per determinare se è necessario disabilitare una funzionalità per l'utente.Your application can use the exception to determine whether a feature should become disabled for the user. Un'applicazione, ad esempio, può disabilitare l'opzione di menu Salva se l'autorizzazione necessaria non viene concessa.For example, an application can disable the Save menu option if the required file permission is not granted.

In alcuni casi, è difficile sapere se è stata effettuata l'asserzione di tutte le autorizzazioni appropriate.Sometimes, it is difficult to know if you have asserted all the appropriate permissions. È 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.A method call which looks innocuous on the surface, for example, may access the file system at some point during its execution. Se l'applicazione non viene distribuita con tutte le autorizzazioni necessarie, è possibile che l'esecuzione risulti corretta nel proprio computer ma non dopo la distribuzione.If you do not deploy your application with all the required permissions, it may test fine when you debug it on your desktop, but fail when deployed. Entrambi i .NET Framework 2.0.NET Framework 2.0 SDK e Visual Studio 2005Visual Studio 2005 sono disponibili strumenti per il calcolo delle autorizzazioni richieste da un'applicazione: MT.exe dei comandi dello strumento di riga e la funzionalità Elabora autorizzazioni di Visual Studio, rispettivamente.Both the .NET Framework 2.0.NET Framework 2.0 SDK and Visual Studio 2005Visual Studio 2005 contain tools for calculating the permissions an application needs: the MT.exe command line tool and the Calculate Permissions feature of Visual Studio, respectively.

Negli argomenti riportati di seguito vengono illustrate le funzionalità di sicurezza aggiuntive di Windows Form.The following topics describe additional Windows Forms security features.

ArgomentoTopic DescrizioneDescription
- File e accesso ai dati più sicuri in Windows Forms- More Secure File and Data Access in Windows Forms Viene descritto come accedere ai file e ai dati in un ambiente parzialmente attendibile.Describes how to access files and data in a partial trust environment.
- Stampa più sicura in Windows Forms- More Secure Printing in Windows Forms Viene descritto come accedere alle funzionalità di stampa in un ambiente parzialmente attendibile.Describes how to access printing features in a partial trust environment.
- Considerazioni aggiuntive sulla sicurezza in Windows Forms- Additional Security Considerations in Windows Forms Viene descritto come modificare le finestre, mediante gli Appunti, ed eseguire chiamate al codice non gestito in un ambiente parzialmente attendibile.Describes performing window manipulation, using the Clipboard, and making calls to unmanaged code in a partial trust environment.

-

Distribuzione di un'applicazione con le autorizzazioni appropriateDeploying an Application with the Appropriate Permissions

La distribuzione di un'applicazione Windows Form in un computer client viene in genere eseguita mediante ClickOnceClickOnce, una tecnologia di distribuzione che consente di descrivere tutti i componenti che devono essere eseguiti dall'applicazione.The most common means of deploying a Windows Forms application to a client computer is with ClickOnceClickOnce, a deployment technology that describes all of the components your application needs to run. ClickOnceClickOnce usa file XML denominati manifesti per descrivere gli assembly e i file che formano l'applicazione nonché le autorizzazioni richieste da quest'ultima. uses XML files called manifests to describe the assemblies and files that make up your application, and also the permissions your application requires.

In ClickOnceClickOnce vengono usate due tecnologie per la richiesta di autorizzazioni elevate in un computer client,ClickOnceClickOnce has two technologies for requesting elevated permissions on a client computer. entrambe basate sull'uso di certificati Authenticode.Both technologies rely on the use of Authenticode certificates. L'uso dei certificati fornisce una discreta garanzia agli utenti che l'applicazione proviene da una fonte attendibile.The certificates help provide some assurance to your users that the application has come from a trusted source.

Queste tecnologie sono descritte nella tabella seguente.The following table describes these technologies.

Tecnologia per autorizzazioni elevateElevated permission technology DescrizioneDescription
Elevazione delle autorizzazioniPermission Elevation La prima volta che si esegue l'applicazione, viene visualizzata all'utente una finestra di dialogo di sicurezzaPrompts the user with a security dialog box the first time your application runs. di elevazione delle autorizzazioni in cui vengono fornite alcune informazioni sull'editore dell'applicazione, in modo che l'utente possa prendere una decisione consapevole sull'assegnazione di altre autorizzazioni all'applicazione.The Permission Elevation dialog box informs the user about who published the application, so that the user can make an informed decision about whether to grant it additional trust
Distribuzione di applicazioni attendibiliTrusted Application Deployment Questa tecnologia richiede che un amministratore di sistema esegua, una sola volta, l'installazione del certificato Authenticode di un'entità di pubblicazione in un computer client.Involves a system administrator performing a one-time installation of a publisher's Authenticode certificate on a client computer. Da quel momento in poi, le eventuali applicazioni firmate con il certificato verranno considerate attendibili e potranno essere eseguite con attendibilità totale nel computer locale senza che venga visualizzata alcuna richiesta all'utente.From that point on, any applications signed with the certificate are regarded as trusted, and can run at full trust on the local computer without additional prompting.

La tecnologia più adatta dipenderà dallo specifico ambiente di distribuzione.Which technology you choose will depend on your deployment environment. Per altre informazioni, vedere Scelta di una strategia di distribuzione ClickOnce.For more information, see Choosing a ClickOnce Deployment Strategy.

Per impostazione predefinita ClickOnceClickOnce le applicazioni distribuite mediante Visual Studio o .NET Framework 2.0.NET Framework 2.0 strumenti SDK (Mage.exe e MageUI.exe) sono configurati per l'esecuzione in un computer client con attendibilità completa.By default, ClickOnceClickOnce applications deployed using either Visual Studio or the .NET Framework 2.0.NET Framework 2.0 SDK tools (Mage.exe and MageUI.exe) are configured to run on a client computer that has Full Trust. Se si vuole distribuire l'applicazione in un ambiente parzialmente attendibile o assegnando soltanto alcune autorizzazioni aggiuntive, sarà necessario modificare le impostazioni predefinite.If you are deploying your application by using partial trust or by using only some additional permissions, you will have to change this default. È possibile farlo con Visual Studio o .NET Framework 2.0.NET Framework 2.0 dello strumento SDK MageUI.exe quando si configura la distribuzione.You can do this with either Visual Studio or the .NET Framework 2.0.NET Framework 2.0 SDK tool MageUI.exe when you configure your deployment. Per altre informazioni sull'uso di MageUI.exe, vedere la procedura dettagliata relativa alla distribuzione di un'applicazione ClickOnce dalla riga di comando.For more information about how to use MageUI.exe, see Walkthrough: Deploying a ClickOnce Application from the Command Line. Per altre informazioni su come impostare le autorizzazioni per una zona personalizzata, vedere Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce o Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce.Also see How to: Set Custom Permissions for a ClickOnce Application or How to: Set Custom Permissions for a ClickOnce Application.

Per altre informazioni sugli aspetti di sicurezza di ClickOnceClickOnce e sull'elevazione delle autorizzazioni, vedere Protezione di applicazioni ClickOnce.For more information about the security aspects of ClickOnceClickOnce and Permission Elevation, see Securing ClickOnce Applications. Per altre informazioni sulla distribuzione di applicazioni attendibili, vedere Panoramica della distribuzione di applicazioni attendibili.For more information about Trusted Application Deployment, see Trusted Application Deployment Overview.

Verifica dell'applicazioneTesting the Application

Se è stata distribuita l'applicazione Windows Form con Visual Studio, è possibile abilitare il debug in ambiente parzialmente attendibile o un'autorizzazione con restrizioni impostato dall'ambiente di sviluppo.If you have deployed your Windows Forms application by using Visual Studio, you can enable debugging in partial trust or a restricted permission set from the development environment. Vedere anche Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate o Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate.Also see How to: Debug a ClickOnce Application with Restricted Permissions or How to: Debug a ClickOnce Application with Restricted Permissions.

Vedere ancheSee Also

Sicurezza di Windows FormWindows Forms Security
Nozioni fondamentali sulla sicurezza per l’accesso al codiceCode Access Security Basics
Sicurezza e distribuzione di ClickOnceClickOnce Security and Deployment
Panoramica della distribuzione di applicazioni attendibiliTrusted Application Deployment Overview
Mage.exe (Strumento per la generazione e la modifica di manifesti)Mage.exe (Manifest Generation and Editing Tool)
MageUI.exe (Strumento per la generazione e la modifica di manifesti, client grafico)MageUI.exe (Manifest Generation and Editing Tool, Graphical Client)