Proteggere le applicazioni ClickOnce
Le applicazioni ClickOnce sono soggette a vincoli di sicurezza di accesso al codice in .NET Framework per limitare l'accesso del codice alle risorse e alle operazioni protette. Per questo motivo, è importante comprendere le implicazioni della sicurezza dell'accesso al codice per scrivere di conseguenza le applicazioni ClickOnce. Le applicazioni possono usare l'attendibilità totale o le aree parziali, ad esempio le aree Internet e Intranet, per limitare l'accesso.
Inoltre, ClickOnce usa i certificati per verificare l'autenticità del server di pubblicazione dell'applicazione e per firmare i manifesti dell'applicazione e della distribuzione per dimostrare che i file non sono stati manomessi. La firma è un passaggio facoltativo, che semplifica la modifica dei file dell'applicazione dopo la generazione dei manifesti. Tuttavia, senza manifesti firmati, è difficile assicurarsi che il programma di installazione dell'applicazione non venga manomesso in attacchi di sicurezza man-in-the-middle. Per questo motivo, è consigliabile firmare i manifesti dell'applicazione e della distribuzione per proteggere le applicazioni.
Zone
Le applicazioni distribuite con la tecnologia ClickOnce sono limitate a un set di autorizzazioni e azioni definite dall'area di sicurezza. Le zone di sicurezza vengono definite nel browser e si basano sulla posizione dell'applicazione. Nella seguente tabella sono elencate le autorizzazioni predefinite in base al percorso di distribuzione:
Percorso di distribuzione | Area di sicurezza |
---|---|
Esecuzione dal Web | Area Internet |
Installazione dal Web | Area Internet |
Installazione da una condivisione file in rete | Area Intranet locale |
Installazione da CD | Attendibilità totale |
Le autorizzazioni predefinite dipendono dal percorso di distribuzione della versione originale dell'applicazione. Gli eventuali aggiornamenti erediteranno tali autorizzazioni. Se l'applicazione è configurata in modo da controllare la disponibilità degli aggiornamenti in un percorso Web o di rete e viene rilevata la disponibilità di una versione più recente, è possibile che l'installazione originale riceva autorizzazioni per l'area Internet o Intranet anziché autorizzazioni di attendibilità totale. Per evitare che la richiesta venga visualizzata, l'amministratore di sistema può specificare criteri di distribuzione ClickOnce che definiscano uno specifico editore dell'applicazione come fonte attendibile. Per i computer in cui viene distribuito questo criterio, le autorizzazioni verranno concesse automaticamente e l'utente non verrà richiesto. Per altre informazioni, vedere Trusted Application Deployment Overview. Per configurare la distribuzione di applicazioni attendibili, è possibile installare il certificato nel computer o a livello aziendale. Per altre informazioni, vedere procedura: aggiungere un autore attendibile a un Computer Client per applicazioni ClickOnce.
Nota
In ClickOnce per .NET Core e .NET 5 o versione successiva questa funzionalità non è supportata. Per altre informazioni, vedere ClickOnce per .NET.
Criteri di sicurezza per l'accesso al codice
Le autorizzazioni per un'applicazione sono determinate dalle impostazioni nell'elemento <trustInfo> Element del manifesto dell'applicazione. Visual Studio genera automaticamente queste informazioni in base alle impostazioni nella pagina delle proprietà Sicurezza del progetto. A un'applicazione ClickOnce vengono concesse solo le autorizzazioni specifiche richieste. Ad esempio, se per l'accesso ai file sono necessarie autorizzazioni di attendibilità totale, ma l'applicazione richiede solo l'autorizzazione di accesso ai file, verrà concessa solo questa autorizzazione e non quelle di attendibilità totale. Quando si sviluppa l'applicazione ClickOnce, è necessario assicurarsi di richiedere solo le autorizzazioni specifiche necessarie per l'applicazione. Nella maggior parte dei casi è possibile usare le aree Internet o Intranet locale per limitare l'applicazione a un'attendibilità parziale. Per altre informazioni, vedere Procedura: Impostare un'area di sicurezza per un'applicazione ClickOnce. Se l'applicazione richiede autorizzazioni personalizzate, è possibile creare un'area personalizzata. Per altre informazioni, vedere Procedura: Impostare le autorizzazioni personalizzate per un'applicazione ClickOnce.
Nota
In ClickOnce per .NET Core e .NET 5 o versione successiva questa funzionalità non è supportata. Per altre informazioni, vedere ClickOnce per .NET.
L'inclusione di un'autorizzazione che non fa parte del set di autorizzazioni predefinito per l'area da cui viene distribuita l'applicazione causerà la richiesta all'utente finale di concedere l'autorizzazione in fase di installazione o aggiornamento. Per evitare che la richiesta venga visualizzata, l'amministratore di sistema può specificare criteri di distribuzione ClickOnce che definiscano uno specifico editore dell'applicazione come fonte attendibile. Nei computer in cui viene distribuito questo criterio, le autorizzazioni verranno concesse automaticamente e l'utente non verrà richiesto.
Uno sviluppatore ha la responsabilità di assicurarsi che l'applicazione venga eseguita con le autorizzazioni appropriate. Se l'applicazione richiede autorizzazioni all'esterno di un'area durante il run-time, è possibile che venga visualizzata un'eccezione di sicurezza. Visual Studio consente di eseguire il debug dell'applicazione nell'area di sicurezza di destinazione e consente di sviluppare applicazioni sicure. Per altre informazioni, vedere Eseguire il debug di app ClickOnce che usano System.Deployment.Application.
Per altre informazioni sulla sicurezza per l'accesso al codice e su ClickOnce, vedere Sicurezza dall'accesso di codice per applicazioni ClickOnce.
Certificati per la firma del codice
Per pubblicare un'applicazione usando la distribuzione ClickOnce, è possibile firmare i manifesti dell'applicazione e della distribuzione per l'applicazione usando una coppia di chiavi pubblica/privata. Gli strumenti per firmare un manifesto sono disponibili nella pagina Firma di Progettazione progetti. Per altre informazioni, vedere Signing Page, Project Designer.
Durante l'installazione, dopo la firma dei manifesti, nella finestra di dialogo Autorizzazioni verranno visualizzate le informazioni sull'editore basate sulla firma Authenticode, per dimostrare all'utente che l'applicazione proviene da una fonte attendibile.
Per altre informazioni su ClickOnce e sui certificati, vedere ClickOnce and Authenticode.
Autenticazione basata su form ASP.NET
Se si desidera controllare le distribuzioni a cui ogni utente può accedere, non è consigliabile abilitare l'accesso anonimo alle applicazioni ClickOnce distribuite in un server Web. La soluzione migliore consiste nel concedere agli utenti l'accesso alle distribuzioni installate in base all'identità, usando l'autenticazione di Windows.
ClickOnce non supporta ASP.NET'autenticazione basata su form perché usa cookie permanenti; questi presentano un rischio di sicurezza perché risiedono nella cache del browser e possono essere violati. Pertanto, se si distribuiscono applicazioni ClickOnce, qualsiasi scenario di autenticazione oltre a autenticazione di Windows non è supportato.
Passaggio di argomenti
Un'ulteriore considerazione sulla sicurezza si verifica se è necessario passare argomenti in un'applicazione ClickOnce. ClickOnce consente agli sviluppatori di fornire una stringa di query alle applicazioni distribuite sul Web. La stringa di query è una serie di coppie nome/valore aggiunte alla fine dell'URL usato per avviare l'applicazione:
http://servername.adatum.com/WindowsApp1.application?username=joeuser
Gli argomenti delle stringhe di query sono disabilitati per impostazione predefinita. Per attivarli, nel manifesto di distribuzione dell'applicazione deve essere impostato l'attributo trustUrlParameters
. Questo valore può essere impostato da Visual Studio e da MageUI.exe. Per istruzioni dettagliate su come abilitare il passaggio di stringhe di query, vedere Procedura: Recuperare informazioni sulle stringhe di query in un'applicazione ClickOnce online.
È consigliabile non passare mai argomenti recuperati tramite una stringa di query a un database o alla riga di comando senza controllare gli argomenti per assicurarsi che siano sicuri. Sono considerati non sicuri gli argomenti che includono caratteri di escape di database o da riga di comando che possono consentire a un utente malintenzionato di modificare l'applicazione eseguendo comandi arbitrari.
Nota
Gli argomenti della stringa di query sono l'unico modo per passare argomenti a un'applicazione ClickOnce all'avvio. Non è possibile passare argomenti a un'applicazione ClickOnce dalla riga di comando.
Distribuzione di assembly offuscati
Visual Studio include la versione gratuita di PreEmptive Protection - Dotfuscator Community, che è possibile usare per proteggere le applicazioni ClickOnce tramite l'offuscamento del codice e misure di protezione attive. Per informazioni dettagliate, vedere la sezione dedicata a ClickOnce della guida dell'utente di Dotfuscator Community.