Visão Geral da Segurança em Formulários do Windows

Antes do lançamento do .NET Framework, todo o código em execução no computador de um usuário tinha os mesmos direitos ou permissões para acessar recursos que tinha um usuário do computador.Por exemplo, se o usuário era autorizado a acessar o sistema de arquivos, o código era autorizado a acessar o sistema de arquivos; se o usuário era autorizado a acessar um banco de dados, o código era autorizado a acessar esse banco de dados.Embora esses direitos ou permissões podem ser aceitáveis para o código em executáveis em que o usuário explicitamente instalou no computador local, eles podem não ser aceitáveis para código potencialmente mal-intencionado proveniente da Internet ou de uma intranet local.Este código não deve ser autorizado a acessar recursos sem permissão do usuário do computador.

O .NET Framework apresenta uma infraestrutura chamada Segurança de Acesso ao Código que permite a você diferenciar as permissões ou direitos do código e do usuário.Por padrão, o código proveniente da Internet e da intranet pode apenas executado no que é conhecido como confiança parcial.Confiança parcial os assuntos um aplicativo para uma série de restrições: entre outras coisas, um aplicativo tem permissão para acessar o disco rígido local e não pode executar código não gerenciado.The .NET Framework os recursos que código tem permissão para acessar controles com base na identidade do código: onde ele veio, se ele possui um Assemblies de Nomes Fortes, ele está assinado com um certificado e assim por diante.

ClickOnce tecnologia, que você usa para implantar aplicativos Windows Forms, ajuda a facilitar para você desenvolver aplicativos executados em confiança parcial, em confiança total ou em confiança parcial com permissões elevadas. ClickOnce fornece recursos sistema autônomo permissão elevação e a implantação de aplicativos confiáveis para que seu aplicativo pode solicitar confiança total ou elevados permissão sistema autônomo de usuário local de forma responsável.

Noções Básicas de Segurança no Framework .NET

A segurança de acesso do código permite que o código seja confiável em graus variáveis, dependendo de onde de originou o código e em outros aspectos da identidade do código.Para obter mais informações sobre a evidência que a common language runtime usa para determinar políticas de segurança, consulte Evidence.Ela ajuda a proteger sistemas de computador de código mal-intencionado e ajuda a proteger código confiável de intencionalmente ou acidentalmente comprometer a segurança.A segurança de acesso do código também lhe fornece mais controle sobre quais ações seu aplicativo pode executar, porque você pode especificar somente as permissões que você precisa que seu aplicativo tenha.A segurança de acesso do código afeta todo o código gerenciado que tem como alvo o Common Language Runtime, mesmo que o código não faça uma única verificação de permissão de segurança de acesso do código.Para obter mais informações sobre a segurança no .NET Framework,consulte Conceitos chave de segurança e Noções Básicas sobre Segurança do Acesso do Código.

Se o usuário executar um arquivo executável dos Formulários do Windows diretamente de um servidor Web ou de um compartilhamento de arquivos, o grau de confiança concedido ao seu aplicativo dependerá de onde reside o código, e como ele é iniciado.Quando um aplicativo é executado, ele automaticamente é avaliado e ele recebe do Common Language Runtime um conjunto de permissões nomeado.Por padrão, ao código do computador local é concedido a conjunto de permissões de Confiança Total, ao código de uma rede local é concedido o conjunto de permissões Intranet Local e ao código da Internet é concedido a conjunto de permissões de Internet.

Observação:

Em o .NET Framework versão 1.0 serviço empacotar 1 e serviço empacotar 2, a Internet o agrupar de códigos de zona recebe Nothing conjunto de permissões. Em todas as outras versões do .NET Framework, o grupo de códigos de zona da Internet recebe o conjunto permissões de Internet.

As permissões padrão concedidas em cada um desses conjuntos de permissão são listadas na Diretiva de segurança padrão tópico.Dependendo das permissões que o aplicativo recebe, ou ele é executado corretamente ou gera uma exceção de segurança.

Muitos aplicativos Windows Forms serão implantados usando ClickOnce .As ferramentas usadas para gerar um  ClickOnce implantação têm padrões de segurança diferente do que o que foi discutido anteriormente.Para obter mais informações, consulte os seguintes tópicos:

As permissões reais concedidas ao seu aplicativo podem ser diferentes dos valores padrão, porque a diretiva de segurança pode ser modificada; isso significa que seu aplicativo pode ter a permissão em um computador, mas não em outro.

Desenvolvendo um Aplicativo de Formulários do Windows Mais Seguro

A segurança é importante em todas as etapas do desenvolvimento de aplicativos.Inicie revisando e seguindo as Secure Coding Guidelines.

Em seguida, decida se seu aplicativo deve executado em confiança total ou em confiança parcial.Executar o aplicativo em confiança total facilita o acesso a recursos do computador local, mas expõe seu aplicativo e seus usuários aos riscos de segurança altos se você não criar e desenvolver o aplicativo estritamente de acordo com o tópico Diretrizes de Codificação Segura.Executar o aplicativo na relação de confiança parcial facilita a desenvolver um aplicativo mais seguro e reduz muito o risco, mas exige mais planejamento de como implementar determinados recursos.

Se você escolher confiança parcial (isto é, qualquer um dos conjuntos de permissão Internet ou Intranet Local), decida como você deseja que o aplicativo se comporte nesse ambiente.Os Formulários do Windows fornecem maneiras alternativas, mais seguras de implementar recursos quando em um ambiente semiconfiável.Determinadas partes do seu aplicativo, como o acesso a dados, podem ser criados e gravados de maneira diferente para ambientes de confiança parcial e de confiança total.Alguns recursos dos Formulários do Windows, como configurações de aplicativo, são projetados para trabalhar na relação de confiança parcial.Para obter mais informações, consulte Visão Geral Sobre Configurações do Aplicativo.

Se seu aplicativo precisar de mais permissões do que a confiança parcial, mas você não deseja executar em confiança total, você pode executar na relação de confiança parcial declarando somente as permissões adicionais que você precisa.Por exemplo, se você deseja executar na relação de confiança parcial, mas deve conceder ao seu aplicativo o acesso somente leitura a um diretório no sistema de arquivos do usuário, você pode solicitar FileIOPermission somente para esse diretório.Usada corretamente, essa abordagem pode fornecer mais funcionalidades ao seu aplicativo e minimizar os riscos de segurança para os usuários.

Ao desenvolver um aplicativo que será executado na relação de confiança parcial, mantenha o controle sobre quais permissões o aplicativo precisa executar e quais permissões o aplicativo pode usar opcionalmente.Quando todas as permissões são conhecidas, você deve fazer uma solicitação de permissão declarativa no nível do aplicativo.Solicitar permissões informa o run time .NET Framework quais permissões seu aplicativo precisa e quais permissões ele especificamente não quer.Para obter mais informações sobre como solicitar permissões, consulte Solicitando permissões e Solicitações de Permissão.

Quando você solicita permissões opcionais, você deve tratar exceções de segurança que serão geradas se o aplicativo executa uma ação que requer permissões não concedidas a ele.O tratamento apropriado do SecurityException garantirá que o aplicativo pode continuar a operar.Seu aplicativo pode usar a exceção para determinar se um recurso deve ficar desativado para o usuário.Por exemplo, um aplicativo pode desativar a opção de menu Salvar se a permissão de arquivo necessária não é concedida.

Às vezes, é difícil saber se você declarou todas as permissões apropriadas.Um chamada de método que parece inofensiva na superfície, por exemplo, pode acessar o sistema de arquivos em algum ponto durante sua execução.Se você não implantar seu aplicativo com todas as permissões necessárias, ele pode sair-se bem em testes quando você depurá-lo na sua área de trabalho, mas falhar quando implantado.O .NET Framework 2,0 SDK e Visual Studio 2005 contém ferramentas para calcular as permissões de que um aplicativo precisa: a ferramenta de linha de comando MT.exe e o recurso Calculate permissões de Visual Studio, respectivamente.

Os tópicos a seguir descrevem os recursos de segurança adicionais dos Formulários do Windows.

Tópico

Descrição

Descreve como acessar arquivos e dados em um ambiente semiconfiável.

Descreve como acessar recursos de impressão em um ambiente semiconfiável.

Descreve executar manipulação de janela, usar a Área de Transferência e fazer chamadas para código não gerenciado em um ambiente parcialmente confiável.

Implantando um Aplicativo com as Permissões Adequadas

É o meio mais comum de implantação de um aplicativo Windows Forms para um computador cliente com ClickOnce, uma tecnologia de implantação que descreve todos os componentes do seu aplicativo precisa ser executado. ClickOnce usa arquivos XML chamado manifestos de descrever os assemblies e arquivos que compõem o seu aplicativo e também as permissões de seu aplicativo requer.

ClickOnce tem duas tecnologias para solicitar permissões elevadas em um computador cliente.As duas tecnologias contam com o uso de certificados Authenticode.Os certificados ajudam a fornecer alguma garantia para os usuários de que o aplicativo é provenientes de uma fonte confiável.

A tabela a seguir descreve estas tecnologias.

Tecnologia de permissões elevadas

Descrição

Elevação de Permissão

Alerta o usuário através de caixa de diálogo de segurança na primeira vez que o seu aplicativo for executado.A caixa de diálogo Elevação de Permissões informa ao usuário sobre quem publicou o aplicativo, para que o usuário possa fazer uma decisão informada sobre se deve concedê-lo confiança adicional

Implantação de Aplicativos Confiáveis

Envolve um administrador do sistema executando uma instalação única de um certificado Authenticode do publicante em um computador cliente.A partir desse ponto, qualquer aplicativo assinado com o certificado é considerado confiável e pode executar em confiança total no computador local sem avisos adicionais.

A tecnologia que você escolher dependerá de seu ambiente de implantação.Para obter mais informações, consulte Escolhendo uma estratégia de implantação do ClickOnce.

Por padrão, aplicativos ClickOnce implantados usando qualquer uma das ferramentas SDK Visual Studio ou .NET Framework 2,0 (Mage.exe e MageUI.exe) são configurados para serem executados em um computador cliente que tenha Confiança Total.Se você estiver implantando o aplicativo através de confiança parcial ou usando somente algumas permissões adicionais, você precisará alterar este padrão.Você pode fazer isso com a ferramenta SDK MageUI.exe do Visual Studio ou do .NET Framework 2,0 quando você configura sua implantação.Para obter mais informações sobre como usar MageUI.exe, consulte Walkthrough: Implantando um aplicativo ClickOnce na linha de comando.

Para obter mais informações sobre os aspectos de segurança do ClickOnce e elevação de permissões, consulte ClickOnce Implantação and Segurança.Para obter mais informações sobre implantação de aplicativos confiáveis, consulte Visão geral sobre implantação de Aplicativo Confiável.

Testando o aplicativo

Se você implantou o aplicativo de Formulários do Windows usando Visual Studio, você poderá ativar a depuração em confiança parcial ou um conjunto de permissões restrito a partir de ambiente de desenvolvimento.

Consulte também

Conceitos

Noções Básicas sobre Segurança de Accesso a Código

Visão geral sobre a implantação do ClickOnce

Visão geral sobre implantação de Aplicativo Confiável

Referência

Geração e Edição (Mage.exe) ferramenta de manifesto

Ferramenta de edição, cliente gráfico (MageUI.exe) e geração de manifesto

Outros recursos

Segurança dos Formulários do Windows