Sicurezza con attendibilità parziale di Windows Presentation Foundation

Aggiornamento: Luglio 2008

In generale, sarebbe opportuno limitare l'accesso diretto alle risorse critiche del sistema da parte delle applicazioni Internet in modo da impedire qualsiasi danno. Per impostazione predefinita, i linguaggi di scripting HTML e lato client non sono in grado di accedere alle risorse critiche del sistema. Dal momento che le applicazioni Windows Presentation Foundation (WPF) ospitate dal browser possono essere avviate dal browser, devono essere conformi a una serie di limitazioni dello stesso tipo. Per attivare queste limitazioni, WPF si basa su Protezione per l'accesso al codice (CAS, Code Access Security) e su ClickOnce (vedere Strategia di sicurezza di Windows Presentation Foundation - Sicurezza della piattaforma). Per impostazione predefinita, le applicazioni ospitate dal browser richiedono il set di autorizzazioni CAS dell'area Internet, a prescindere dal fatto che vengano avviate da Internet, dalla Intranet locale o dal computer locale. Le applicazioni in esecuzione con un set di autorizzazioni incompleto vengono definite come applicazioni in esecuzione con attendibilità parziale.

In WPF viene fornito ampio supporto per garantire l'utilizzo del maggior numero possibile di funzionalità in modo sicuro con attendibilità parziale e, tramite CAS, supporto aggiuntivo per la programmazione con attendibilità parziale.

Nel presente argomento sono contenute le seguenti sezioni.

  • Supporto con attendibilità parziale della funzionalità WPF
  • Programmazione con attendibilità parziale
  • Gestione delle autorizzazioni
  • Argomenti correlati

Supporto con attendibilità parziale della funzionalità WPF

Nella tabella seguente sono elencate in modo non dettagliato le funzionalità Windows Presentation Foundation (WPF) che è possibile utilizzare in modo sicuro entro i limiti del set di autorizzazioni dell'area Internet.

Tabella 1: Funzionalità WPF sicure in attendibilità parziale

Area funzionalità

Feature

Generale

Finestra del browser

Accesso al sito di origine

IsolatedStorage (limite di 512 KB)

Provider UIAutomation

Esecuzione di comandi

IME (Input Method Editor)

Stilo e input penna di Tablet PC

Trascinamento della selezione simulato mediante eventi del mouse capture e move

OpenFileDialog

Deserializzazione XAML (mediante XamlReader.Load)

Integrazione Web

Finestra di dialogo di download del browser

Esplorazione di primo livello avviata dall'utente

mailto:links

Parametri URI (Uniform Resource Identifier)

HTTPWebRequest

Contenuto WPF ospitato in IFRAME

Hosting di pagine HTML dello stesso sito utilizzando Frame

Hosting di pagine HTML dello stesso sito utilizzando WebBrowser

Servizi Web (ASMX)

Servizi Web (mediante Windows Communication Foundation)

Visiva

2D e 3D

Animazione

Elementi multimediali (sito di origine e tra domini)

Immagini/Audio/Video

Lettura

Oggetti FlowDocuments

Documenti XPS

Tipi di carattere incorporati e di sistema

Caratteri CFF e TrueType

Modifica

Controllo ortografico

RichTextBox

Supporto Appunti per testo non crittografato e input penna

Operazione Incolla avviata dall'utente

Copia di contenuto selezionato

Controlli

Controlli generici

Nella tabella sono incluse le funzionalità WPF di livello elevato. Per informazioni più dettagliate, consultare la documentazione disponibile in Windows Software Development Kit (SDK) sulle autorizzazioni necessarie per ciascun membro di WPF. Inoltre, le seguenti risorse contengono informazioni più dettagliate sull'esecuzione in situazioni di attendibilità parziale, con alcune considerazioni speciali:

Nella tabella seguente sono indicate le funzionalità di WPF che non è possibile utilizzare in modo sicuro entro i limiti del set di autorizzazioni dell'area Internet:

Tabella 2: Funzionalità WPF non sicure in attendibilità parziale

Area funzionalità

Feature

Generale

Finestra (finestre e finestre di dialogo definite dall'applicazione)

SaveFileDialog

File system

Accesso al Registro di sistema

Trascinamento della selezione

Serializzazione XAML (mediante XamlWriter.Save)

Client UIAutomation

Accesso alla finestra di origine (HwndHost)

Supporto vocale completo

Interoperabilità con Windows Form

Integrazione Web

Scripting

DOM (Document Object Model)

Visiva

Effetti bitmap

Codifica delle immagini

Modifica

Appunti RTF (Rich-Text Format)

Supporto XAML completo

Programmazione con attendibilità parziale

Per le applicazioni XBAP, il codice che richiede autorizzazioni ulteriori rispetto a quelle incluse nel set di autorizzazioni predefinito dell'area Internet sarà rilevato da CAS e genererà un'eccezione di sicurezza e la chiusura dell'applicazione. Sebbene questo comportamento consenta di proteggere gli utenti, non offre un'esperienza utente ottimale.

In genere, è probabile che il codice che richiede autorizzazioni ulteriori rispetto a quelle consentite sia codice comune condiviso dalle applicazioni autonome e da quelle ospitate dal browser. In CAS e in WPF vengono fornite varie tecniche per la gestione di uno scenario di questo tipo.

Rilevamento delle autorizzazioni tramite CAS

In alcune situazioni, è possibile che il codice condiviso degli assembly di librerie sia utilizzato dalle applicazioni autonome e dalle XBAP. In questi casi, è possibile che il codice esegua funzionalità che potrebbero richiedere un numero di autorizzazioni maggiore rispetto al set assegnato all'applicazione. L'applicazione consente di rilevare automaticamente se sono disponibili determinate autorizzazioni utilizzando le funzionalità di sicurezza di Microsoft .NET Framework. In modo specifico, è possibile verificare la disponibilità di una determinata autorizzazione chiamando il metodo Demand sull'istanza dell'autorizzazione desiderata. Tale procedura viene mostrata nell'esempio seguente, in cui il codice esegue una query per verificare la disponibilità dell'autorizzazione a salvare un file sul disco locale:

Se un'applicazione non dispone dell'autorizzazione desiderata, la chiamata al metodo Demand genera un'eccezione di sicurezza. In caso contrario, l'autorizzazione è disponibile. IsPermissionGranted incapsula questo comportamento e restituisce true o false a seconda dei casi.

Riduzione normale delle prestazioni della funzionalità

La capacità del codice di rilevare le autorizzazioni di cui dispone risulta particolarmente interessante nel caso in cui il codice può essere eseguito da aree diverse. Sebbene il rilevamento dell'area sia importante, è meglio fornire un'alternativa all'utente, se possibile. Ad esempio, di solito un'applicazione con attendibilità totale consente agli utenti di creare file in qualsiasi posizione, mentre un'applicazione con attendibilità parziale consente di creare file unicamente in uno spazio di memorizzazione isolato. Se il codice per la creazione di un file esiste in un assembly (dll) condiviso da applicazioni con attendibilità totale (autonome) e da applicazioni con attendibilità parziale (ospitate dal browser) e si desidera che entrambe le applicazioni consentano la creazione di file, prima di creare un file nel percorso appropriato sarà necessario rilevare se l'esecuzione è in attendibilità parziale o totale utilizzando il codice condiviso. I due casi sono illustrati nel codice riportato di seguito:

In molte situazioni è possibile trovare un'alternativa all'attendibilità parziale.

In un ambiente controllato, ad esempio una Intranet, è possibile installare framework gestiti personalizzati nella base client in Global Assembly Cache (GAC). Queste librerie consentono di eseguire il codice che richiede l'attendibilità totale e possono essere utilizzate come riferimento dalle applicazioni alle quali è consentita unicamente l'attendibilità parziale mediante l'utilizzo della classe AllowPartiallyTrustedCallersAttribute (per ulteriori informazioni, vedere Sicurezza di Windows Presentation Foundation e Strategia di sicurezza di Windows Presentation Foundation - Sicurezza della piattaforma).

Rilevamento host del browser

L'utilizzo di CAS per la verifica delle autorizzazioni è una tecnica appropriata se è necessaria una verifica per singola autorizzazione. Tuttavia, tale tecnica dipende dal rilevamento di eccezioni durante la normale elaborazione, operazione che in genere non è consigliata e che può causare problemi di prestazioni. Al contrario, se la applicazione browser XAML (XBAP) viene eseguita solo nella sandbox dell'area Internet, è possibile utilizzare la proprietà BrowserInteropHelper.IsBrowserHosted, che restituisce true per le applicazione browser XAML (XBAP).

Vedere Esempio Detecting If Browser-Hosted.

Nota

il metodo IsBrowserHosted consente solo di stabilire se un'applicazione è in esecuzione in un browser, non il set di autorizzazioni utilizzato dall'applicazione.

Gestione delle autorizzazioni

Per impostazione predefinita, le XBAP vengono eseguite con attendibilità parziale (set di autorizzazioni dell'area Internet predefinito). Tuttavia, a seconda dei requisiti dell'applicazione, questo set predefinito può essere modificato. Se, ad esempio, una XBAP viene avviata da una Intranet locale, può usufruire di un set di autorizzazioni più esteso, mostrato nella tabella seguente.

Tabella 3: Autorizzazioni LocalIntranet e Internet

Autorizzazione

Attributo

LocalIntranet

Internet

DNS

Accesso ai server DNS

Yes

No

Variabili di ambiente

Lettura

Yes

No

Finestre di dialogo file

Apertura

Yes

Yes

Finestre di dialogo file

Illimitato

Yes

No

Archiviazione isolata

Isolamento assembly in base all'utente

Yes

No

Archiviazione isolata

Isolamento sconosciuto

Yes

Yes

Archiviazione isolata

Quota utenti illimitata

Yes

No

Supporti multimediali

Audio, video e immagini sicure

Yes

Yes

Stampa

Stampa predefinita

Yes

No

Stampa

Stampa sicura

Yes

Yes

Reflection

Emissione

Yes

No

Protezione

Esecuzione del codice gestito

Yes

Yes

Protezione

Asserzione autorizzazioni concesse

Yes

No

Interfaccia utente

Illimitato

Yes

No

Interfaccia utente

Finestre di primo livello sicure

Yes

Yes

Interfaccia utente

Appunti personali

Yes

Yes

Browser

Esplorazione sicura dei frame in HTML

Yes

Yes

Per aumentare il numero di autorizzazioni, è possibile utilizzare uno degli strumenti indicati di seguito:

Se la XBAP utilizzata richiede l'attendibilità totale, è possibile utilizzare gli stessi strumenti per aumentare il numero di autorizzazioni richieste, sebbene l'attendibilità totale verrà ottenuta solo se la XBAP è installata e avviata dal computer locale. Ciò significa che il supporto dell'aggiornamento automatico non viene mantenuto quando le XBAP vengono pubblicate sui server Web.

Vedere anche

Concetti

Sicurezza di Windows Presentation Foundation

Strategia di sicurezza di Windows Presentation Foundation - Sicurezza della piattaforma

Strategia di sicurezza di Windows Presentation Foundation - Progettazione sicura

Cronologia delle modifiche

Date

History

Motivo

Luglio 2008

Menzione aggiunta del nuovo controllo WebBrowser.

Modifica di funzionalità in SP1.