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à dell'editore dell'applicazione e per firmare i manifesti dell'applicazione e della distribuzione al fine di dimostrare che i file non sono stati alterati. La firma è un passaggio facoltativo, che semplifica la modifica dei file dell'applicazione dopo la generazione dei manifesti. Senza manifesti firmati, è tuttavia difficile garantire che il programma di installazione dell'applicazione non venga manomesso in attacchi alla sicurezza di tipo 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 aree di sicurezza vengono definite in Internet Explorer e si basano sul percorso 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 questi criteri, le autorizzazioni verranno concesse automaticamente senza alcun intervento da parte dell'utente. 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.

Se si aggiunge un'autorizzazione non inclusa nel set di autorizzazioni predefinito per l'area da cui viene distribuita l'applicazione, all'utente finale verrà chiesto di concedere l'autorizzazione al momento dell'installazione o dell'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. Sui computer in cui vengono distribuiti questi criteri, le autorizzazioni verranno concesse automaticamente senza alcun intervento da parte dell'utente.

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 di Internet Explorer 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.

Non passare mai argomenti recuperati tramite una stringa di query direttamente a un database o alla riga di comando senza verificare che gli argomenti 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.