Partilhar via


Segurança (WPF)

Ao desenvolver Windows Presentation Foundation (WPF) autônomos e aplicativos hospedados por navegador, você deve considerar o modelo de segurança. WPF aplicativos autônomos executado com permissões irrestritas (CAS FullTrust conjunto de permissões), se implantado usando o Windows Installer (. msi), XCopy, ou ClickOnce. Não há suporte para a implantação de confiança parcial, os aplicativos autônomos de WPF com ClickOnce. No entanto, um aplicativo host de confiança total pode criar uma relação de confiança parcial AppDomain usando o.NET Framework Add-in do modelo. For more information, see WPF Add-Ins Overview.

WPFaplicativos hospedados por navegador são hospedados por Windows Internet Explorer ou o Firefox, e pode ser uma XAML browser applications (XBAPs) ou flexível Extensible Application Markup Language (XAML) documentos para obter mais informações, consulte Visão geral sobre WPF XAML Browser Applications.

WPFaplicativos hospedados por navegador executado dentro de uma proteção de segurança de confiança parcial, por padrão, o que é limitado para o padrão CAS Internet conjunto de permissões da zona. Isso efetivamente isola WPF hospedado no navegador aplicativos do computador cliente, da mesma forma que você esperaria aplicativos típicos da Web sejam isolados. Um XBAP pode elevar os privilégios, até a confiança total, dependendo da zona de segurança de URL de implantação e configuração de segurança do cliente. Para obter mais informações, consulte WPF Partial Trust Security.

This topic discusses the security model for Windows Presentation Foundation (WPF) standalone and browser-hosted applications.

This topic contains the following sections:

  • Safe Navigation

  • Configurações de segurança de Software de navegação da Web

  • Controles de recurso e o controle WebBrowser

  • Disabling APTCA Assemblies for Partially Trusted Client Applications

  • Comportamento seguro para arquivos XAML flexível

  • Recursos para desenvolver aplicativos WPF que promovem a segurança

Safe Navigation

Para XBAPs, WPF distingue dois tipos de navegação: aplicativo e navegador.

Navegação do aplicativo é a navegação entre itens de conteúdo dentro de um aplicativo que está hospedado por um navegador. Navegação é a de navegação que altera o URL do conteúdo e a localização do próprio navegador. A relação entre a navegação do aplicativo (geralmente XAML) e de navegação do navegador (normalmente HTML) é mostrada na ilustração a seguir:

Diagrama de navegação

O tipo de conteúdo é considerado seguro para um XBAP navegar até principalmente é determinado pela navegação do aplicativo ou navegação do navegador é usada.

Application Navigation Security

Navegação do aplicativo é considerada segura se puder ser identificado com um pacote de URI, que oferece suporte a quatro tipos de conteúdo:

Tipo de conteúdo

Description

URI Example

Resource

Os arquivos adicionados a um projeto com um tipo de compilação de recurso.

pack://application:,,,/MyResourceFile.xaml

Content

Os arquivos adicionados a um projeto com um tipo de compilação de conteúdo.

pack://application:,,,/MyContentFile.xaml

Site de origem

Os arquivos adicionados a um projeto com um tipo de compilação de Nenhum.

pack://siteoforigin:,,,/MySiteOfOriginFile.xaml

Código do aplicativo

Recursos do XAML que possuem o code-behind compilado.

- ou -

Arquivos XAML que são adicionados a um projeto com um tipo de compilação de página.

pack://application:,,,/MyResourceFile.xaml

Observação

Para obter mais informações sobre arquivos de dados do aplicativo e o pacote URIs, consulte Recursos, conteúdo e arquivos de dados de aplicativos WPF.

Arquivos desses tipos de conteúdo podem ser navegados pelo usuário ou através de programação:

  • User Navigation. O usuário navega clicando em um Hyperlink elemento.

  • Programmatic Navigation. O aplicativo navegará sem envolver o usuário, por exemplo, definindo a NavigationWindow.Source propriedade.

Browser Navigation Security

Navegação do navegador é considerada segura somente sob as seguintes condições:

  • User Navigation. O usuário navega clicando em um Hyperlink elemento que esteja dentro do principal NavigationWindow, não em um aninhadas Frame.

  • Zone. The content being navigated to is located on the Internet or the local intranet.

  • Protocol. O protocolo usado é http, https, arquivo, ou mailto.

Se um XBAP tenta navegar em conteúdo de uma maneira que não está de acordo com essas condições, um SecurityException é lançada.

Configurações de segurança de Software de navegação da Web

As configurações de segurança no seu computador determinam o acesso que é concedida a qualquer navegador da Web. Navegador da Web inclui qualquer aplicativo ou componente que usa a WinINet ou UrlMon APIs, incluindo o Internet Explorer e PresentationHost.exe.

Internet Explorer provides a mechanism by which you can configure the functionality that is allowed to be executed by or from Internet Explorer, including the following:

  • .NET Framework-reliant components

  • ActiveX controls and plug-ins

  • Downloads

  • Scripting

  • User Authentication

A coleção de funcionalidade que pode ser protegida dessa forma é configurada em uma base por zona para o Internet, Intranet, Sites confiáveis, e Sites restritos zonas. As etapas a seguir descrevem como configurar as configurações de segurança:

  1. Abrir o painel de controle.

  2. Clique em de rede e Internet e, em seguida, clique em Opções da Internet.

    Aparece a caixa de diálogo Opções da Internet.

  3. Sobre o segurança , selecione a zona para configurar as configurações de segurança.

  4. Clique o Nível personalizado botão.

    O As configurações de segurança caixa de diálogo é exibida e você pode definir as configurações de segurança para a zona selecionada.

    Caixa de diálogo Configurações de Segurança

Observação

Você também pode acessar a caixa de diálogo Opções da Internet do Internet Explorer.Clique em Ferramentas e, em seguida, clique em Opções da Internet.

Começando com Windows Internet Explorer 7, as seguintes configurações de segurança especificamente para .NET Framework estão incluídos:

  • Loose XAML. Controls whether Internet Explorer can navigate to and loose XAML files. (Enable, Disable, and Prompt options).

  • XAML browser applications. Controls whether Internet Explorer can navigate to and run XBAPs. (Enable, Disable, and Prompt options).

Por padrão, essas configurações são todos ativadas para o Internet, da intranet Local, e sites confiáveis zonas e desativado para o sites restritos zona.

Configurações de registro relacionadas a segurança do WPF

No além as configurações de segurança disponíveis por meio de opções da Internet, os valores de registro a seguir estão disponíveis para bloqueio seletivamente os inúmeros recursos do WPF sensíveis à segurança. Os valores são definidos na seguinte chave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\Windows Presentation Foundation\Features

The following table lists the values that can be set.

Value Name

Value Type

Value Data

XBAPDisallow

REG_DWORD

1 to disallow; 0 to allow.

LooseXamlDisallow

REG_DWORD

1 to disallow; 0 to allow.

WebBrowserDisallow

REG_DWORD

1 to disallow; 0 to allow.

MediaAudioDisallow

REG_DWORD

1 to disallow; 0 to allow.

MediaImageDisallow

REG_DWORD

1 to disallow; 0 to allow.

MediaVideoDisallow

REG_DWORD

1 to disallow; 0 to allow.

ScriptInteropDisallow

REG_DWORD

1 to disallow; 0 to allow.

Controles de recurso e o controle WebBrowser

O WPF WebBrowser controle pode ser usado para hospedar o conteúdo da Web. O WPF WebBrowser controle envolve o controle WebBrowser ActiveX subjacente. O WPF fornece algum suporte para proteger seu aplicativo quando você usa o WPF WebBrowser o controle para hospedar o conteúdo da Web não confiável. No entanto, alguns recursos de segurança devem ser aplicados diretamente pelos aplicativos usando o WebBrowser de controle. Para obter mais informações sobre o controle WebBrowser ActiveX, consulte visões gerais do controle WebBrowser e tutoriais.

Observação

Esta seção também se aplica a Frame controlar, pois ele usa o WebBrowser para navegar até o conteúdo HTML.

Se o WPF WebBrowser controle é usado para hospedar o conteúdo da Web não confiável, seu aplicativo deve usar uma relação de confiança parcial AppDomain para ajudar a isolar o código do seu aplicativo de potencialmente mal-intencionado código de script HTML. Isso é especialmente verdadeiro se o seu aplicativo está interagindo com o script hospedado usando a InvokeScript método e a ObjectForScripting propriedade. For more information, see WPF Add-Ins Overview.

Se seu aplicativo usa o WPF WebBrowser controle, outra maneira de aumentar a segurança e atenuar os ataques é permitir que controles de recurso do Internet Explorer. Controles de recurso são adições ao Internet Explorer que permitem que os administradores e desenvolvedores configurar os recursos do Internet Explorer e os aplicativos que hospedam o controle WebBrowser ActiveX, que o WPF WebBrowser disposição de controle. Controles de recurso podem ser configurados usando o CoInternetSetFeatureEnabled função ou alterando os valores no registro. Para obter mais informações sobre controles de recurso, consulte Introdução aos controles de recurso e controles de recurso do Internet.

Se você estiver desenvolvendo um aplicativo autônomo do WPF que usa o WPF WebBrowser controle, o WPF permite automaticamente que os seguintes controles de recurso para seu aplicativo.

Controle de recurso

FEATURE_MIME_HANDLING

FEATURE_MIME_SNIFFING

FEATURE_OBJECT_CACHING

FEATURE_SAFE_BINDTOOBJECT

FEATURE_WINDOW_RESTRICTIONS

FEATURE_ZONE_ELEVATION

FEATURE_RESTRICT_FILEDOWNLOAD

FEATURE_RESTRICT_ACTIVEXINSTALL

FEATURE_ADDON_MANAGEMENT

FEATURE_HTTP_USERNAME_PASSWORD_DISABLE

FEATURE_SECURITYBAND

FEATURE_UNC_SAVEDFILECHECK

FEATURE_VALIDATE_NAVIGATE_URL

FEATURE_DISABLE_TELNET_PROTOCOL

FEATURE_WEBOC_POPUPMANAGEMENT

FEATURE_DISABLE_LEGACY_COMPRESSION

FEATURE_SSLUX

Como esses controles de recurso são habilitados incondicionalmente, um aplicativo de confiança total pode ser prejudicado por eles. Nesse caso, se não houver nenhum risco de segurança para o aplicativo específico e o conteúdo que hospeda-lo, o controle de recurso correspondente pode ser desativado.

Os controles de recurso são aplicados pelo processo de instanciar o objeto ActiveX do WebBrowser. Portanto, se você estiver criando um aplicativo independente que pode navegar para conteúdo não confiável, considere seriamente a ativação de controles de recurso adicional.

Observação

Essa recomendação baseia-se nas recomendações gerais para segurança de host MSHTML e SHDOCVW.Para obter mais informações, consulte O Host de MSHTML perguntas freqüentes sobre segurança: Parte I do II e a segurança do Host MSHTML FAQ: Parte II do II.

Para seu executável, considere a ativação os seguintes controles de recurso definindo o valor do registro para 1.

Controle de recurso

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

FEATURE_SHOW_APP_PROTOCOL_WARN_DIALOG

FEATURE_LOCALMACHINE_LOCKDOWN

FEATURE_FORCE_ADDR_AND_STATUS

FEATURE_RESTRICTED_ZONE_WHEN_FILE_NOT_FOUND

Para seu executável, considere desabilitar o controle de recurso a seguir definindo o valor do registro como 0.

Controle de recurso

FEATURE_ENABLE_SCRIPT_PASTE_URLACTION_IF_PROMPT

Se você executar uma relação de confiança parcial XAML browser application (XBAP) que inclui um WPF WebBrowser o controle na Windows Internet Explorer, o WPF hospeda o controle WebBrowser ActiveX no espaço de endereço do processo do Internet Explorer. Desde que o controle WebBrowser ActiveX está hospedado no Internet Explorer processo, todos os controles de recurso para o Internet Explorer também serão habilitados para o controle WebBrowser ActiveX.

XBAPs executado no Internet Explorer também obtém um nível adicional de segurança em comparação com aplicativos autônomos normal. Essa segurança adicional é porque o Internet Explorer e, portanto, o controle WebBrowser ActiveX, executa em protegidos por padrão no modo de Windows Vista e Windows 7. Para obter mais informações sobre o modo protegido, consulte Compreendendo e trabalhando no modo protegido do Internet Explorer.

Observação

Se você tentar executar um XBAP que inclui um WPF WebBrowser o controle no Firefox, enquanto estiver na zona da Internet, um SecurityException será lançada.Isso é devido à diretiva de segurança do WPF.

Disabling APTCA Assemblies for Partially Trusted Client Applications

When managed assemblies are installed into the global assembly cache (GAC), they become fully trusted because the user must provide explicit permission to install them. Because they are fully trusted, only fully trusted managed client applications can use them. To allow partially trusted applications to use them, they must be marked with the AllowPartiallyTrustedCallersAttribute (APTCA). Only assemblies that have been tested to be safe for execution in partial trust should be marked with this attribute.

However, it is possible for an APTCA assembly to exhibit a security flaw after being installed into the GAC. Depois de uma falha de segurança for descoberta, editores de assembly podem produzir uma atualização de segurança para corrigir o problema em instalações existentes e para se proteger contra instalações que podem ocorrer após o problema é descoberto. Uma opção para a atualização é desinstalar o assembly, embora o que pode danificar outros aplicativos de cliente totalmente confiáveis que usam o assembly.

WPFFornece um mecanismo pelo qual um conjunto APTCA pode ser desativado parcialmente confiável XBAPs sem desinstalar o assembly APTCA.

Para desativar um assembly APTCA, você deve criar uma chave do registro especial:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\<AssemblyFullName>, FileVersion=<AssemblyFileVersion>

A seguir mostra um exemplo:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy\APTCA\aptcagac, Version=1.0.0.0, Culture=neutral, PublicKeyToken=215e3ac809a0fea7, FileVersion=1.0.0.0

Essa chave estabelece uma entrada para o assembly APTCA. Você também deve criar um valor nessa chave que habilita ou desabilita o assembly. A seguir estão os detalhes do valor:

  • Nome do valor: APTCA_FLAG.

  • Tipo de valor: REG_DWORD.

  • Dados do valor: 1 para desativar; 0 para habilitar.

Se um assembly tiver de ser desabilitada para aplicativos de cliente parcialmente confiável, você pode escrever uma atualização que cria a chave do registro e o valor.

Observação

Núcleo .NET Framework assemblies não são afetados por desabilitá-los dessa maneira, porque eles são necessários para aplicativos gerenciados para executar.Suporte para desabilitar os assemblies APTCA é direcionado principalmente para aplicativos de terceiros.

Comportamento seguro para arquivos XAML flexível

Loose XAML arquivos são apenas de marcação XAML que não dependem de qualquer code-behind, o manipulador de eventos ou conjunto de aplicativos específicos. Quando perder XAML arquivos são navegou diretamente do navegador, eles são carregados em uma proteção de segurança com base no padrão Internet zona permissão conjunto.

However, the security behavior is different when loose XAML files are navigated to from either a NavigationWindow or Frame in a standalone application.

In both cases, the loose XAML file that is navigated to inherits the permissions of its host application. However, this behavior may be undesirable from a security perspective, particularly if a loose XAML file was produced by an entity that is either not trusted or unknown. This type of content is known as external content, and both Frame and NavigationWindow can be configured to isolate it when navigated to. Isolation is achieved by setting the SandboxExternalContent property to true, as shown in the following examples for Frame and NavigationWindow:

<Frame 
  Source="ExternalContentPage.xaml" 
  SandboxExternalContent="True">
</Frame>
<!-- Sandboxing external content using NavigationWindow-->
<NavigationWindow 
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  Source="ExternalContentPage.xaml" 
  SandboxExternalContent="True">
</NavigationWindow>

With this setting, external content will be loaded into a process that is separate from the process that is hosting the application. Esse processo é restrito ao conjunto de permissão de zona da Internet de padrão, isolando efetivamente o aplicativo de hospedagem e o computador cliente.

Observação

Mesmo que a navegação perder XAML arquivos a partir de um um NavigationWindow ou Frame em um aplicativo autônomo é implementado com base no navegador do WPF que hospeda a infra-estrutura, envolvendo o PresentationHost processo, o nível de segurança é um pouco menor do que quando o conteúdo é carregado diretamente no Internet Explorer em Windows Vista e Windows 7 (que ainda seria via PresentationHost). Isso ocorre porque um aplicativo autônomo do WPF usando um navegador da Web não fornecem o recurso adicional de segurança de modo protegido do Internet Explorer.

Recursos para desenvolver aplicativos WPF que promovem a segurança

A seguir estão alguns recursos adicionais para ajudar a desenvolver WPF os aplicativos que promovem a segurança:

Área

Resource

Managed code

Padrões e práticas de orientação de segurança para aplicativos

CAS

Segurança de Acesso de código

ClickOnce

<>>Implantação e segurança do ClickOnce

WPF

WPF Partial Trust Security

Consulte também

Conceitos

WPF Partial Trust Security

Estratégia de segurança do WPF - Segurança da Plataforma

Estratégia de segurança do WPF - Engenharia de Segurança

Segurança de Acesso de código

<>>Implantação e segurança do ClickOnce

Visão geral do XAML (WPF)

Outros recursos

Padrões e práticas de orientação de segurança para aplicativos