Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si sviluppano applicazioni autonome e ospitate in browser di Windows Presentation Foundation (WPF), è necessario prendere in considerazione il modello di sicurezza. Le applicazioni autonome WPF vengono eseguite con autorizzazioni senza restrizioni ( set di autorizzazioniCAS FullTrust ), indipendentemente dal fatto che siano distribuite tramite Windows Installer (.msi), XCopy o ClickOnce. La distribuzione di applicazioni WPF autonome con attendibilità parziale con ClickOnce non è supportata. Tuttavia, un'applicazione host con attendibilità totale può creare un oggetto AppDomain con attendibilità parziale usando il modello di componente aggiuntivo .NET Framework. Per altre informazioni, vedere Cenni preliminari su WPF Add-Ins.
Le applicazioni ospitate da browser WPF sono ospitate da Windows Internet Explorer o Firefox e possono essere applicazioni browser XAML (XBAP) o documenti XAML (Extensible Application Markup Language) separati. Per altre informazioni, vedere Cenni preliminari sulle applicazioni browser XAML WPF.
Avvertimento
Per funzionare, gli XBAP richiedono browser legacy, come Internet Explorer e versioni precedenti di Firefox. Questi browser meno recenti sono in genere non supportati in Windows 10 e Windows 11. I browser moderni non supportano più la tecnologia necessaria per le app XBAP a causa di rischi per la sicurezza. I plug-in che abilitano XBAP non sono più supportati. Per altre informazioni, vedere Domande più frequenti sulle applicazioni ospitate dal browser WPF (XBAP).
Le applicazioni ospitate dal browser WPF vengono eseguite all'interno di una sandbox di sicurezza parzialmente attendibile, per impostazione predefinita, che è limitata al set di autorizzazioni dell'areaInternet CAS predefinita. Ciò isola in modo efficace le applicazioni ospitate dal browser WPF dal computer client nello stesso modo in cui si prevede che le applicazioni Web tipiche siano isolate. Un XBAP può elevare i privilegi, fino all'attendibilità totale, a seconda dell'area di sicurezza dell'URL di distribuzione e della configurazione di sicurezza del client. Per altre informazioni, vedere Sicurezza con attendibilità parziale in WPF.
In questo argomento viene illustrato il modello di sicurezza per le applicazioni autonome e ospitate in browser di Windows Presentation Foundation (WPF).
Questo argomento contiene le sezioni seguenti:
Disabilitazione degli assembly APTCA per applicazioni client parzialmente attendibili
Risorse per lo sviluppo di applicazioni WPF che promuovono la sicurezza
Navigazione sicura
Per gli XBAP, WPF distingue due tipi di navigazione: applicazione e browser.
Lo spostamento dell'applicazione è lo spostamento tra elementi di contenuto all'interno di un'applicazione ospitata da un browser. Lo spostamento nel browser è lo spostamento che modifica il contenuto e l'URL della posizione di un browser stesso. La relazione tra lo spostamento dell'applicazione (in genere XAML) e lo spostamento nel browser (in genere HTML) è illustrata nella figura seguente:
Il tipo di contenuto considerato sicuro per un XBAP a cui può navigare è determinato principalmente dal fatto che venga utilizzata la navigazione dell'applicazione o quella del browser.
Sicurezza di spostamento delle applicazioni
Lo spostamento delle applicazioni è considerato sicuro se può essere identificato con un URI di tipo pack, che supporta quattro tipi di contenuto:
Tipo di contenuto | Descrizione | Esempio di URI |
---|---|---|
Conto risorse | I file con un tipo di build Resource aggiunti a un progetto. | pack://application:,,,/MyResourceFile.xaml |
Contenuto | File aggiunti a un progetto con un tipo di build Content. | pack://application:,,,/MyContentFile.xaml |
Sito di origine | File che sono aggiunti a un progetto del tipo di compilazione None. | pack://siteoforigin:,,,/MySiteOfOriginFile.xaml |
Codice dell'applicazione | Risorse XAML con codice associato compilato. oppure File XAML che vengono aggiunti a un progetto con un tipo di compilazione denominato "Pagina". |
pack://application:,,,/MyResourceFile
.xaml
|
Annotazioni
Per altre informazioni sui file di dati dell'applicazione e sugli URI di pacchetto, vedere Risorse dell'applicazione WPF, contenuto e file di dati.
I file di questi tipi di contenuto possono essere raggiunti sia dall'utente che a livello di codice.
Navigazione utente. L'utente si sposta facendo clic su un Hyperlink elemento.
Navigazione Programmatica. L'applicazione si sposta senza coinvolgere l'utente, ad esempio impostando la NavigationWindow.Source proprietà .
Sicurezza della navigazione del browser
Lo spostamento nel browser è considerato sicuro solo nelle condizioni seguenti:
Navigazione utente. L'utente si sposta facendo clic su un Hyperlink elemento che si trova all'interno dell'oggetto principale NavigationWindow, non in un oggetto annidato Frame.
Zona. Il contenuto a cui si passa si trova su Internet o sulla intranet locale.
Protocollo. Il protocollo usato è http, https, file o mailto.
Se un XBAP tenta di passare al contenuto in modo che non sia conforme a queste condizioni, viene generata un'eccezione SecurityException .
Impostazioni di sicurezza del software di esplorazione Web
Le impostazioni di sicurezza nel computer determinano l'accesso concesso a qualsiasi software di esplorazione Web. Il software di esplorazione Web include qualsiasi applicazione o componente che usa le API WinINet o UrlMon , tra cui Internet Explorer e PresentationHost.exe.
Internet Explorer offre un meccanismo in base al quale è possibile configurare le funzionalità che possono essere eseguite da o da Internet Explorer, tra cui:
Componenti dipendenti dal .NET Framework
Controlli ActiveX e plug-in
Scaricamenti
Scrittura di script
Autenticazione degli utenti
La raccolta di funzionalità che possono essere protette in questo modo viene configurata in base all'area per le aree Internet, Intranet, Siti attendibili e Siti con restrizioni . I passaggi seguenti descrivono come configurare le impostazioni di sicurezza:
Aprire il Pannello di controllo.
Fare clic su Rete e Internet e quindi su Opzioni Internet.
Verrà visualizzata la finestra di dialogo Opzioni Internet.
Nella scheda Sicurezza selezionare l'area per cui configurare le impostazioni di sicurezza.
Fare clic sul pulsante Livello personalizzato .
Viene visualizzata la finestra di dialogo Impostazioni di sicurezza che consente di configurare le impostazioni di sicurezza per l'area selezionata.
Annotazioni
È anche possibile accedere alla finestra di dialogo Opzioni Internet da Internet Explorer. Fare clic su Strumenti e quindi su Opzioni Internet.
A partire da Windows Internet Explorer 7, sono incluse le impostazioni di sicurezza seguenti per .NET Framework:
XAML libero. Controlla se Internet Explorer può accedere o aprire file XAML non collegati. (Opzioni Abilita, Disabilita e Prompt).
Applicazioni browser XAML. Controlla se Internet Explorer può passare a ed eseguire XBAP. (Opzioni Abilita, Disabilita e Prompt).
Per impostazione predefinita, queste impostazioni sono tutte abilitate per le aree Internet, Intranet locale e Siti attendibili e disabilitate per l'area Siti con restrizioni .
Impostazioni del Registro di sistema WPF correlate alla sicurezza
Oltre alle impostazioni di sicurezza disponibili tramite Le opzioni Internet, i valori del Registro di sistema seguenti sono disponibili per bloccare in modo selettivo una serie di funzionalità WPF sensibili alla sicurezza. I valori sono definiti sotto la chiave seguente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features
Nella tabella seguente sono elencati i valori che è possibile impostare.
Nome del valore | Tipo di valore | Dati valore |
---|---|---|
XBAPDisallow | REG_DWORD | 1 per non consentire; 0 per consentire. |
LooseXamlDisallow | REG_DWORD | 1 per non consentire; 0 per consentire. |
WebBrowserDisallow | REG_DWORD | 1 per non consentire; 0 per consentire. |
MediaAudioDisattiva | REG_DWORD | 1 per non consentire; 0 per consentire. |
DisabilitaImmagineMedia | REG_DWORD | 1 per non consentire; 0 per consentire. |
MediaVideoDisallow | REG_DWORD | 1 per non consentire; 0 per consentire. |
ScriptInteropDisallow | REG_DWORD | 1 per non consentire; 0 per consentire. |
Controllo WebBrowser e Controlli delle funzionalità
Il controllo WPF WebBrowser può essere usato per ospitare contenuto Web. Il controllo WPF WebBrowser incapsula il controllo ActiveX WebBrowser sottostante. WPF offre supporto per proteggere l'applicazione quando si usa il controllo WPF WebBrowser per ospitare contenuto Web non attendibile. Tuttavia, alcune funzionalità di sicurezza devono essere applicate direttamente dalle applicazioni che usano il WebBrowser controllo . Per altre informazioni sul controllo ActiveX WebBrowser, vedere Cenni preliminari sul controllo WebBrowser ed Esercitazioni.
Annotazioni
Questa sezione si applica anche al controllo Frame poiché utilizza il WebBrowser per passare al contenuto HTML.
Se il controllo WPF WebBrowser viene usato per ospitare contenuto Web non attendibile, l'applicazione deve usare un trust AppDomain parziale per isolare il codice dell'applicazione da codice script HTML potenzialmente dannoso. Ciò vale soprattutto se l'applicazione interagisce con lo script ospitato usando il InvokeScript metodo e la ObjectForScripting proprietà . Per altre informazioni, vedere Cenni preliminari su WPF Add-Ins.
Se l'applicazione usa il controllo WPF WebBrowser , un altro modo per aumentare la sicurezza e attenuare gli attacchi consiste nell'abilitare i controlli delle funzionalità di Internet Explorer. I controlli delle funzionalità sono strumenti aggiuntivi per Internet Explorer che consentono agli amministratori e agli sviluppatori di configurare le funzionalità di Internet Explorer e delle applicazioni che ospitano il controllo ActiveX WebBrowser, il quale è incapsulato dal controllo WPF WebBrowser. I controlli funzionalità possono essere configurati tramite la funzione CoInternetSetFeatureEnabled o modificando i valori nel Registro di sistema. Per altre informazioni sui controlli delle funzionalità, vedere Introduzione ai controlli funzionalità e ai controlli delle funzionalità Internet.
Se si sviluppa un'applicazione WPF autonoma che usa il controllo WPF WebBrowser , WPF abilita automaticamente i controlli delle funzionalità seguenti per l'applicazione.
Controllo delle funzioni |
---|
GESTIONE_FUNZIONALITA_MIME |
FEATURE_MIME_SNIFFING |
FUNZIONALITÀ_MEMORIZZAZIONE_OGGETTI |
FEATURE_SAFE_BINDTOOBJECT |
RESTRIZIONI_FINESTRA_FUNZIONI |
CARATTERISTICA_DI_ELEVAZIONE_DI_ZONA |
FUNZIONE_LIMITA_SCARICAMENTO_FILE |
Funzione_limita_installazione_ActiveX |
GESTIONE_COMPONENTI_AGGIUNTIVI |
Disabilita Nome Utente e Password HTTP |
FEATURE_SECURITYBAND |
FEATURE_UNC_SAVEDFILECHECK |
FEATURE_VALIDATE_NAVIGATE_URL |
FEATURE_DISABLE_TELNET_PROTOCOL |
FUNZIONE_GESTIONE_POPUP_WEBOC |
FEATURE_DISABLE_LEGACY_COMPRESSION |
FEATURE_SSLUX |
Poiché questi controlli funzionalità sono abilitati in modo incondizionato, un'applicazione con attendibilità totale potrebbe essere compromessa da tali controlli. In questo caso, se non esiste alcun rischio di sicurezza per l'applicazione specifica e il contenuto che ospita, il controllo della funzionalità corrispondente può essere disabilitato.
I controlli funzionalità vengono applicati dal processo che crea un'istanza dell'oggetto ActiveX WebBrowser. Pertanto, se si sta creando un'applicazione autonoma in grado di passare a contenuto non attendibile, è consigliabile prendere in considerazione l'abilitazione di controlli funzionalità aggiuntivi.
Annotazioni
Questa raccomandazione è basata su raccomandazioni generali per la sicurezza dell'host MSHTML e SHDOCVW. Per altre informazioni, vedere Domande frequenti sulla sicurezza host MSHTML: parte I di II e Domande frequenti sulla sicurezza host MSHTML: parte II di II.
Per il file eseguibile, è consigliabile abilitare i controlli delle funzionalità seguenti impostando il valore del Registro di sistema su 1.
Controllo delle funzioni |
---|
FEATURE_ACTIVEX_REPURPOSEDETECTION |
FEATURE_BLOCK_LMZ_IMG |
FEATURE_BLOCK_LMZ_OBJECT |
FEATURE_BLOCK_LMZ_SCRIPT |
FEATURE_RESTRICT_RES_TO_LMZ |
FEATURE_RESTRICT_ABOUT_PROTOCOL_IE7 |
Attenzione: Mostra avviso di protocollo dell'applicazione |
FEATURE_LOCALMACHINE_LOCKDOWN |
FUNZIONE_FORZA_INDIRIZZO_E_STATO |
FUNZIONE_ZONA_RISTRETTA_QUANDO_FILE_NON_TROVATO |
Per il file eseguibile, è consigliabile disabilitare il controllo della funzionalità seguente impostando il valore del Registro di sistema su 0.
Controllo delle funzioni |
---|
FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT |
Se si esegue un'applicazione browser XAML con fiducia parziale (XBAP) che include un controllo WPF WebBrowser in Windows Internet Explorer, WPF integra il controllo ActiveX WebBrowser nello spazio degli indirizzi del processo di Internet Explorer. Poiché il controllo ActiveX WebBrowser è ospitato nel processo di Internet Explorer, tutti i controlli delle funzionalità per Internet Explorer sono abilitati anche per il controllo ActiveX WebBrowser.
Gli XBAP in esecuzione in Internet Explorer ottengono anche un livello di sicurezza aggiuntivo rispetto alle normali applicazioni autonome. Questa sicurezza aggiuntiva è dovuta al fatto che Internet Explorer, e quindi il controllo ActiveX WebBrowser, viene eseguito in modalità protetta per impostazione predefinita in Windows Vista e Windows 7. Per altre informazioni sulla modalità protetta, vedere Understanding and Working in Protected Mode Internet Explorer.
Annotazioni
Se si tenta di eseguire un XBAP che include un controllo WPF WebBrowser in Firefox, mentre nell'area Internet verrà generata un'eccezione SecurityException . Ciò è dovuto ai criteri di sicurezza WPF.
Disabilitazione degli assembly APTCA per applicazioni client parzialmente attendibili
Quando gli assembly gestiti vengono installati nella Global Assembly Cache (GAC), diventano completamente attendibili perché l'utente deve fornire autorizzazioni esplicite per installarli. Poiché sono completamente attendibili, solo le applicazioni client gestite completamente attendibili possono usarle. Per consentire l'uso di applicazioni parzialmente attendibili, è necessario contrassegnarle con APTCA AllowPartiallyTrustedCallersAttribute . Solo gli assembly che sono stati verificati come sicuri per l'esecuzione in un ambiente a fiducia parziale devono essere contrassegnati con questo attributo.
Tuttavia, è possibile che un assembly APTCA mostri un difetto di sicurezza una volta installato nella GAC. Dopo aver individuato un difetto di sicurezza, gli editori di assembly possono produrre un aggiornamento della sicurezza per risolvere il problema nelle installazioni esistenti e per proteggersi dalle installazioni che possono verificarsi dopo che il problema è stato individuato. Un'opzione per l'aggiornamento consiste nel disinstallare l'assembly, anche se può interrompere altre applicazioni client completamente attendibili che usano l'assembly.
WPF fornisce un meccanismo tramite il quale un assembly APTCA può essere disabilitato per gli XBAP parzialmente attendibili senza disinstallare l'assembly APTCA.
Per disabilitare un assembly APTCA, è necessario creare una chiave speciale del Registro di sistema:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>
Di seguito è riportato un esempio:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0
Questa chiave stabilisce un elemento per l'assembly APTCA. Devi anche creare un valore in questa chiave per abilitare o disabilitare l'assembly. Di seguito sono riportati i dettagli del valore:
Nome valore: APTCA_FLAG.
Tipo valore: REG_DWORD.
Dati valore: 1 per disabilitare; 0 da abilitare.
Se un assembly deve essere disabilitato per le applicazioni client parzialmente attendibili, è possibile scrivere un aggiornamento che crea la chiave e il valore del Registro di sistema.
Annotazioni
Gli assembly principali del .NET Framework non vengono influenzati se disabilitati in questo modo, poiché sono richiesti per l'esecuzione delle applicazioni gestite. Il supporto per la disabilitazione degli assembly APTCA è destinato principalmente alle applicazioni di terze parti.
Comportamento sandbox per file XAML non compilati
I file XAML separati sono file XAML di sola markup che non dipendono da alcun code-behind, gestore eventi o assembly specifico dell'applicazione. Quando i file XAML separati vengono spostati direttamente dal browser, vengono caricati in una sandbox di sicurezza in base al set di autorizzazioni predefinito dell'area Internet.
Tuttavia, il comportamento di sicurezza è diverso quando i file XAML separati vengono aperti sia da NavigationWindow sia da Frame in un'applicazione autonoma.
In entrambi i casi, il file XAML indipendente a cui si accede eredita le autorizzazioni della sua applicazione host. Tuttavia, questo comportamento può essere indesiderato dal punto di vista della sicurezza, in particolare se un file XAML libero è stato prodotto da un'entità non attendibile o sconosciuta. Questo tipo di contenuto è noto come contenuto esterno, e sia Frame che NavigationWindow possono essere configurati per isolarlo quando vengono navigati. L'isolamento viene ottenuto impostando la proprietà SandboxExternalContent su true, come illustrato negli esempi seguenti per Frame e NavigationWindow:
<Frame
Source="ExternalContentPage.xaml"
SandboxExternalContent="True">
</Frame>
<!-- Sandboxing external content using NavigationWindow-->
<NavigationWindow
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Source="ExternalContentPage.xaml"
SandboxExternalContent="True">
</NavigationWindow>
Con questa impostazione, il contenuto esterno verrà caricato in un processo separato dal processo che ospita l'applicazione. Questo processo è limitato al set di autorizzazioni predefinito dell'area Internet, isolandolo in modo efficace dall'applicazione di hosting e dal computer client.
Annotazioni
Anche se la navigazione verso file XAML separati da un'applicazione standalone tramite NavigationWindow o Frame viene implementata sulla base dell'infrastruttura di hosting del browser WPF, che coinvolge il processo PresentationHost, il livello di sicurezza è leggermente inferiore rispetto a quando il contenuto viene caricato direttamente in Internet Explorer su Windows Vista e Windows 7 (sempre tramite PresentationHost). Ciò è dovuto al fatto che un'applicazione WPF autonoma che usa un Web browser non fornisce la funzionalità di sicurezza aggiuntiva modalità protetta di Internet Explorer.
Risorse per lo sviluppo di applicazioni WPF che promuovono la sicurezza
Di seguito sono riportate alcune risorse aggiuntive che consentono di sviluppare applicazioni WPF che promuovono la sicurezza:
Zona | Conto risorse |
---|---|
Codice gestito | Linee guida per la sicurezza di modelli e procedure per le applicazioni |
CAS | Sicurezza per l'accesso al codice |
ClickOnce | Sicurezza e distribuzione ClickOnce |
WPF (Windows Presentation Foundation) | Sicurezza a Fede Parziale WPF |
Vedere anche
.NET Desktop feedback