Protezione di applicazioni ClickOnce
Le applicazioni ClickOnce sono soggette ai vincoli di sicurezza dall'accesso di codice in .NET Framework che consentono di limitare l'accesso del codice alle risorse e alle operazioni protette. Per poter scrivere correttamente le applicazioni ClickOnce, è quindi importante comprendere le implicazioni di questo tipo di sicurezza. Le applicazioni possono utilizzare l'attendibilità totale o le aree parziali, ad esempio le aree Internet e Intranet, per limitare l'accesso.
Inoltre, ClickOnce utilizza 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.
Aree
Le applicazioni distribuite utilizzando 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 ulteriori informazioni, vedere Cenni preliminari sulla distribuzione di applicazioni attendibili. Per configurare la distribuzione di applicazioni attendibili, è possibile installare il certificato nel computer o a livello aziendale. Per ulteriori informazioni, vedere Procedura: aggiungere un autore attendibile a un computer client per applicazioni ClickOnce.
Criteri di sicurezza per l'accesso al codice
Le autorizzazioni per un'applicazione sono determinate dalle impostazioni nell'elemento Elemento <trustInfo> (applicazione ClickOnce) del manifesto dell'applicazione. Visual Studio genera automaticamente queste informazioni in base alle impostazioni presenti 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 utilizzare le aree Internet o Intranet locale per limitare l'applicazione all'attendibilità parziale. Per ulteriori informazioni, vedere Procedura: impostare un'area di sicurezza per un'applicazione ClickOnce. Se l'applicazione richiede autorizzazioni personalizzate, è possibile creare un'area personalizzata. Per ulteriori informazioni, vedere Procedura: impostare le autorizzazioni personalizzate per un'applicazione ClickOnce.
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. In Visual Studio è possibile eseguire il debug dell'applicazione all'interno dell'area di sicurezza di destinazione. Vengono inoltre fornite informazioni utili per lo sviluppo di applicazioni sicure. Per ulteriori informazioni, vedere Procedura: eseguire il debug di un'applicazione ClickOnce con autorizzazioni limitate.
Per ulteriori 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 tramite la tecnologia di distribuzione ClickOnce, è possibile firmare il manifesto dell'applicazione e della distribuzione con una coppia di chiavi pubblica/privata. Gli strumenti per firmare un manifesto sono disponibili nella pagina Firma di Progettazione progetti. Per ulteriori informazioni, vedere Pagina Firma, Progettazione progetti. In alternativa, è possibile firmare i manifesti con un file di chiavi durante il processo di pubblicazione, tramite la Pubblicazione guidata. Inoltre, in Windows Software Development Kit (SDK) è incluso uno strumento per la firma digitale, SignTool.exe (strumento per la firma), che consente di firmare il manifesto.
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 ulteriori informazioni su ClickOnce e sui certificati, vedere ClickOnce e Authenticode.
Autenticazione basata su form ASP.NET
Se si desidera controllare le distribuzioni cui può accedere ciascun utente, è consigliabile non consentire l'accesso anonimo alle applicazioni ClickOnce distribuite su un server Web. La soluzione migliore consiste nel concedere agli utenti l'accesso alle distribuzioni installate in base all'identità, utilizzando l'autenticazione di Windows.
ClickOnce non supporta l'autenticazione basata su form ASP.NET poiché prevede l'utilizzo di cookie permanenti. Questi comportano un rischio di sicurezza poiché rimangono nella cache di Internet Explorer e sono quindi vulnerabili ad attacchi di pirateria. Se pertanto si distribuiscono applicazioni ClickOnce, non è supportato alcuno scenario di autenticazione ad eccezione dell'autenticazione di Windows.
Passaggio di argomenti
Se si desidera passare argomenti a un'applicazione ClickOnce, possono verificarsi ulteriori problemi di sicurezza. 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 utilizzato per avviare l'applicazione:
http://server1.adatum.com/WindowsApp1.application?username=utenterossi
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 passaggi dettagliati sull'attivazione del passaggio delle 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 delle stringhe 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
È possibile offuscare l'applicazione con Dotfuscator per impedire ad altri utenti di decodificare il codice. L'offuscamento degli assembly tuttavia non è integrato nel processo di distribuzione dell'IDE Visual Studio o ClickOnce. Sarà necessario pertanto eseguire l'offuscamento al di fuori del processo di distribuzione, eventualmente utilizzando un passaggio di post-compilazione. Dopo aver compilato il progetto, eseguire manualmente i passaggi seguenti al di fuori di Visual Studio:
Eseguire l'offuscamento utilizzando Dotfuscator.
Utilizzare Mage.exe o MageUI.exe per generare i manifesti ClickOnce e firmarli. Per ulteriori informazioni, vedere Mage.exe (Strumento per la generazione e la modifica di manifesti) e MageUI.exe (Strumento per la generazione e la modifica di manifesti, client grafico).
Pubblicare manualmente (copiare) i file nel percorso di origine della distribuzione, ovvero nel server Web, nella condivisione UNC o su CD-ROM.
Vedere anche
Concetti
Sicurezza e distribuzione di ClickOnce