Condividi tramite


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à completa o usare zone 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. La tabella seguente elenca le autorizzazioni predefinite in base al percorso di distribuzione:

Luogo di distribuzione Area di sicurezza
Esecuzione dal Web Zona Internet
Installare dal Web Zona Internet
Eseguire l'installazione da una condivisione file di rete Zona Intranet locale
Eseguire l'installazione da CD-ROM Fiducia totale

Le autorizzazioni predefinite sono basate sul percorso da cui è stata distribuita la versione originale dell'applicazione; gli aggiornamenti all'applicazione erediteranno tali autorizzazioni. Se l'applicazione è configurata per verificare la disponibilità di aggiornamenti da un percorso Web o di rete ed è disponibile una versione più recente, l'installazione originale può ricevere le autorizzazioni per Internet o l'area Intranet anziché le autorizzazioni di attendibilità totale. Per impedire agli utenti di essere richiesti, un amministratore di sistema può specificare un criterio di distribuzione ClickOnce che definisce un editore di applicazioni specifico come origine 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 Panoramica della distribuzione di applicazioni attendibili. Per configurare la distribuzione di applicazioni attendibili, è possibile installare il certificato nel computer o a livello aziendale. Per altre informazioni, vedere Procedura: Aggiungere un server di pubblicazione attendibile a un computer client per le applicazioni ClickOnce.

Annotazioni

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 l'accesso ai file richiede autorizzazioni di attendibilità totale, se l'applicazione richiede l'autorizzazione di accesso ai file, verrà concessa solo l'autorizzazione di accesso ai file, non le autorizzazioni di attendibilità completa. 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 all'attendibilità parziale. Per altre informazioni, vedere Procedura: Impostare un'area di sicurezza per un'applicazione ClickOnce. Se l'applicazione richiede autorizzazioni personalizzate, è possibile creare una zona personalizzata. Per altre informazioni, vedere Procedura: Impostare autorizzazioni personalizzate per un'applicazione ClickOnce.

Annotazioni

In ClickOnce per .NET Core e .NET 5 o versione successiva la sicurezza dall'accesso al codice non è supportata. In .NET Framework l'uso della sicurezza dall'accesso di codice non è una procedura consigliata e non è consigliato.

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 impedire agli utenti di essere richiesti, un amministratore di sistema può specificare un criterio di distribuzione ClickOnce che definisce un editore di applicazioni specifico come origine attendibile. Nei computer in cui viene distribuito questo criterio, le autorizzazioni verranno concesse automaticamente e l'utente non verrà richiesto.

In qualità di sviluppatore, è responsabilità dell'utente assicurarsi che l'applicazione venga eseguita con le autorizzazioni appropriate. Se l'applicazione richiede autorizzazioni al di fuori di una zona durante l'esecuzione, potrebbe verificarsi 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 dell'accesso al codice e ClickOnce, vedere Sicurezza dell'accesso al codice per le applicazioni ClickOnce.

Certificati di 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 la firma di un manifesto sono disponibili nella pagina Firma del Designer di Progetto. Per altre informazioni, vedere Pagina di sottoscrizione, Progettista di progetti.

Dopo la firma dei manifesti, le informazioni sull'autore basate sulla firma Authenticode verranno visualizzate all'utente nella finestra di dialogo autorizzazioni durante l'installazione per mostrare all'utente che l'applicazione ha avuto origine da un'origine attendibile.

Per altre informazioni su ClickOnce e certificati, vedere ClickOnce e Authenticode.

ASP.NET - autenticazione basata su form

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. Invece, si abiliterebbe agli utenti l'accesso alle distribuzioni installate in base all'identità di un utente 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 all'autenticazione di Windows non è supportato.

Passaggio di argomenti

Un'ulteriore considerazione sulla sicurezza avviene 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 ha il formato di una serie di coppie nome-valore alla fine dell'URL usato per avviare l'applicazione:

http://servername.adatum.com/WindowsApp1.application?username=joeuser

Per impostazione predefinita, gli argomenti della stringa di query sono disabilitati. Per abilitarle, l'attributo trustUrlParameters deve essere impostato nel manifesto della distribuzione dell'applicazione. 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 sulla stringa 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. Gli argomenti non sicuri sono quelli che includono caratteri di escape del database o della riga di comando che potrebbero consentire a un utente malintenzionato di modificare l'applicazione nell'esecuzione di comandi arbitrari.

Annotazioni

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 protezione gratuita PreEmptive - Dotfuscator Community, che è possibile usare per proteggere le applicazioni ClickOnce tramite misure di protezione attiva e offuscamento del codice. Per informazioni dettagliate, vedere la sezione ClickOnce della Guida dell'utente della community di Dotfuscator.