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:
Servizi Web mediante Windows Communication Foundation (vedereAttendibilità parziale).
XAML (vedere Cenni preliminari su XAML).
Popup (vedere System.Windows.Controls.Primitives.Popup).
Trascinamento della selezione (vedere Cenni preliminari sul trascinamento della selezione).
Appunti (vedere System.Windows.Clipboard).
Immagini (vedere System.Windows.Controls.Image).
Serializzazione (vedere XamlReader.Load, XamlWriter.Save).
Finestra di dialogo Apri file (vedere Microsoft.Win32.OpenFileDialog).
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:
Strumento per la generazione e la modifica di manifesti (Mage.exe).
Strumento per la generazione e la modifica di manifesti con interfaccia grafica (MageUI.exe).
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. |