Partilhar via


Visão geral da segurança no Windows Forms

Importante

Este conteúdo só se aplica ao .NET Framework, a menos que especificado de outra forma.

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 um usuário do computador tinha. Por exemplo, se o usuário tinha permissão para acessar o sistema de arquivos, o código tinha permissão para acessar o sistema de arquivos; Se o usuário tinha permissão para acessar um banco de dados, o código tinha permissão para acessar esse banco de dados. Embora esses direitos ou permissões possam ser aceitáveis para código em executáveis que o usuário instalou explicitamente no computador local, eles podem não ser aceitáveis para código potencialmente mal-intencionado proveniente da Internet ou de uma Intranet local. Esse código não deve ser capaz de acessar os recursos do computador do usuário sem permissão.

O .NET Framework introduz uma infraestrutura chamada Segurança de Acesso ao Código que permite diferenciar as permissões, ou direitos, que o código tem dos direitos que o usuário tem. Por padrão, o código proveniente da Internet e da Intranet só pode ser executado no que é conhecido como confiança parcial. A confiança parcial sujeita um aplicativo a uma série de restrições: entre outras coisas, um aplicativo é impedido de acessar o disco rígido local e não pode executar código não gerenciado. O .NET Framework controla os recursos que o código tem permissão para acessar com base na identidade desse código: de onde veio, se tem um Strong-Named Assemblies, se é assinado com um certificado e assim por diante.

A tecnologia ClickOnce, que você usa para implantar aplicativos do Windows Forms, ajuda a facilitar o desenvolvimento de aplicativos que são executados em confiança parcial, em confiança total ou em confiança parcial com permissões elevadas. O ClickOnce fornece recursos como Elevação de Permissão e Implantação de Aplicativo Confiável para que seu aplicativo possa solicitar confiança total ou permissões elevadas do usuário local de forma responsável.

Noções básicas sobre segurança no .NET Framework

A segurança de acesso ao código permite que o código seja confiável em diferentes graus, dependendo de onde o código se origina e de outros aspetos da identidade do código. Para obter mais informações sobre as evidências que o Common Language Runtime usa para determinar a diretiva de segurança, consulte Evidências. Ele ajuda a proteger os sistemas de computador contra códigos mal-intencionados e ajuda a proteger o código confiável contra comprometer a segurança intencionalmente ou acidentalmente. A segurança de acesso ao código também oferece mais controle sobre quais ações seu aplicativo pode executar, porque você pode especificar apenas as permissões que você precisa que seu aplicativo tenha. A segurança de acesso ao código afeta todo o código gerenciado que tem como alvo o Common Language Runtime, mesmo que esse código não faça uma única verificação de permissão de segurança de acesso ao código. Para obter mais informações sobre segurança no .NET Framework, consulte Key Security Concepts e Code Access Security Basics.

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

Observação

No .NET Framework versão 1.0 Service Pack 1 e Service Pack 2, o grupo de códigos de zona da Internet recebe o conjunto de permissões Nothing. Em todas as outras versões do .NET Framework, o grupo de código da zona Internet recebe o conjunto de permissões da Internet.

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

Muitos aplicativos do Windows Forms serão implantados usando o ClickOnce. As ferramentas usadas para gerar uma implantação do ClickOnce têm padrões de segurança diferentes do que foi discutido anteriormente. Para obter mais informações, consulte a discussão a seguir.

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 permissão em um computador, mas não em outro.

Desenvolvendo um aplicativo Windows Forms mais seguro

A segurança é importante em todas as etapas do desenvolvimento de aplicativos. Comece por rever e seguir as Diretrizes de Codificação Segura.

Em seguida, decida se seu aplicativo deve ser executado em confiança total ou se deve ser executado em confiança parcial. Executar seu aplicativo com total confiança facilita o acesso a recursos no computador local, mas expõe seu aplicativo e seus usuários a altos riscos de segurança se você não projetar e desenvolver seu aplicativo estritamente de acordo com o tópico Diretrizes de codificação segura. Executar seu aplicativo em confiança parcial facilita o desenvolvimento de um aplicativo mais seguro e reduz muito risco, mas requer mais planejamento em como implementar determinados recursos.

Se você escolher a confiança parcial (ou seja, os conjuntos de permissões da Internet ou da Intranet Local), decida como deseja que seu aplicativo se comporte nesse ambiente. O Windows Forms fornece maneiras alternativas e mais seguras de implementar recursos quando em um ambiente semiconfiável. Certas partes do seu aplicativo, como o acesso a dados, podem ser projetadas e escritas de forma diferente para ambientes de confiança parcial e total. Alguns recursos do Windows Forms, como configurações de aplicativos, são projetados para funcionar em confiança parcial. Para obter mais informações, consulte Visão geral das configurações do aplicativo.

Se seu aplicativo precisar de mais permissões do que a confiança parcial permite, mas você não quiser executar em confiança total, poderá executar em confiança parcial enquanto afirma apenas as permissões adicionais necessárias. Por exemplo, se pretendes executar em confiança limitada, mas tens de dar à tua aplicação acesso apenas de leitura a um diretório no sistema de ficheiros do utilizador, podes solicitar FileIOPermission apenas para esse diretório. Usada corretamente, essa abordagem pode dar ao seu aplicativo maior funcionalidade e minimizar os riscos de segurança para seus usuários.

Quando você desenvolve um aplicativo que será executado em confiança parcial, acompanhe quais permissões seu aplicativo deve executar e quais permissões seu aplicativo pode usar opcionalmente. Quando todas as permissões forem conhecidas, você deverá fazer uma solicitação declarativa de permissão no nível do aplicativo. Solicitar permissões informa o tempo de execução do .NET Framework sobre quais permissões seu aplicativo precisa e quais permissões ele especificamente não deseja. Para obter mais informações sobre como solicitar permissões, consulte Solicitando permissões.

Ao solicitar permissões opcionais, você deve lidar com exceções de segurança que serão geradas se seu aplicativo executar uma ação que exija permissões não concedidas a ele. O tratamento adequado do SecurityException irá garantir que a sua aplicação possa continuar a funcionar. Seu aplicativo pode usar a exceção para determinar se um recurso deve ser desabilitado 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 for concedida.

Às vezes, é difícil saber se você afirmou todas as permissões apropriadas. Uma chamada de método que parece inócua na superfície, por exemplo, pode acessar o sistema de arquivos em algum momento durante sua execução. Se você não implantar seu aplicativo com todas as permissões necessárias, ele poderá ser testado corretamente quando você depurá-lo na área de trabalho, mas falhar quando implantado. O SDK do .NET Framework 2.0 e o 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 Calcular permissões do Visual Studio, respectivamente.

Os tópicos a seguir descrevem recursos de segurança adicionais do Windows Forms.

Tópico Descrição
- Acesso mais seguro a arquivos e dados no Windows Forms Descreve como acessar arquivos e dados em um ambiente de confiança parcial.
- Impressão mais segura no Windows Forms Descreve como acessar recursos de impressão em um ambiente de confiança parcial.
- Considerações adicionais de segurança no Windows Forms Descreve como manipular janelas, utilizar a Área de Transferência e efetuar chamadas para código não gerido num ambiente de confiança parcial.

Implantando um aplicativo com as permissões apropriadas

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

ClickOnce tem duas tecnologias para solicitar permissões elevadas em um computador cliente. Ambas as tecnologias dependem do uso de certificados Authenticode. Os certificados ajudam a fornecer alguma garantia aos usuários de que o aplicativo veio de uma fonte confiável.

A tabela a seguir descreve essas tecnologias.

Tecnologia de autorização avançada Descrição
Elevação de permissões Solicita ao usuário uma caixa de diálogo de segurança na primeira vez que seu aplicativo é executado. A caixa de diálogo Elevação de permissão informa o usuário sobre quem publicou o aplicativo, para que o usuário possa tomar uma decisão informada sobre se deseja conceder-lhe confiança adicional
Implantação de aplicativos confiáveis Envolve um administrador de sistemas realizando a instalação única do certificado Authenticode de um editor num computador cliente. A partir desse ponto, todos os aplicativos assinados com o certificado são considerados confiáveis e podem ser executados com confiança total no computador local sem solicitação adicional.

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

Por padrão, os aplicativos ClickOnce implantados usando o Visual Studio ou as ferramentas do SDK do .NET Framework (Mage.exe e MageUI.exe) são configurados para serem executados em um computador cliente que tenha Confiança Total. Se você estiver implantando seu aplicativo usando confiança parcial ou usando apenas algumas permissões adicionais, será necessário alterar esse padrão. Você pode fazer isso com o Visual Studio ou a ferramenta SDK do .NET Framework MageUI.exe ao configurar sua implantação. Para obter mais informações sobre como usar MageUI.exe, consulte Passo a passo: implantando manualmente um aplicativo ClickOnce. Consulte também Como: Definir permissões personalizadas para um aplicativo ClickOnce ou Como: Definir permissões personalizadas para um aplicativo ClickOnce.

Para obter mais informações sobre os aspetos de segurança do ClickOnce e da elevação de privilégios, consulte Protegendo aplicações ClickOnce. Para obter mais informações sobre a implantação de aplicativos confiáveis, consulte Visão geral da implantação de aplicativos confiáveis.

Testando o aplicativo

Se você implantou seu aplicativo Windows Forms usando o Visual Studio, você pode habilitar a depuração em confiança parcial ou um conjunto de permissões restritas do ambiente de desenvolvimento. Consulte também Como: Depurar um aplicativo ClickOnce com permissões restritas.

Ver também