Exportar (0) Imprimir
Expandir Tudo
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Noções básicas da segurança de acesso do código

Todos os aplicativos que acessam o common language runtime (isto é, cada aplicativo gerenciado) devem interagir com o sistema de segurança do tempo de execução. Quando um aplicativo gerenciado é carregado, seu host concede automaticamente um conjunto de permissões. Essas permissões são determinadas pelas configurações de segurança local do host ou pela área restrita dentro da qual está o aplicativo. Dependendo dessas permissões, o aplicativo é executado corretamente ou gera uma exceção de segurança.

O host padrão para aplicativos de desktop permite que o código seja executado em confiança total. Portanto, se seu aplicativo tem como destino a área de trabalho, ele tem um conjunto de permissões ilimitado. Outros hosts ou áreas restritas fornecem um conjunto de permissões limitado para aplicativos. Como o conjunto de permissões pode mudar de host para host, você deve criar seu aplicativo para usar somente as permissões que seu host de destino permite.

Você deve estar familiarizado com os seguintes conceitos de segurança de acesso a código para compor aplicativos efetivos que direcionam o common language runtime:

  • Código do tipo seguro: O código do tipo seguro é o código que acessa tipos apenas de maneiras bem definidas, permitidas. Por exemplo, dado uma referência de objeto válido, o código de tipo seguros pode acessar a memória em deslocamentos fixos que correspondem aos membros de campo reais. Se a memória de acessos do código em deslocamentos arbitrários fora do intervalo de memória que pertence a estes objetos são publicamente expostos em campos, não é do tipo seguro. Para ativar o código para se beneficiar da segurança de acesso a código, você deve usar um compilador que produz o código seguro para digitação verificável. Para obter mais informações, consulte a seção Escrevendo código tipo seguro verificável posteriormente neste tópico.

  • Sintaxe declarativa e imperativa: O código que visa o tempo de execução da linguagem comum pode interagir com o sistema de segurança, solicitando permissões, exigindo que os chamadores tenham permissões específicas e substituindo determinadas configurações de segurança (fornecendo privilégios suficientes). Você usa duas formas de sintaxe para interagir programaticamente com o sistema de segurança do. NET Framework: sintaxe declarativa e sintaxe imperativa. Chamadas declarativas são executadas usando atributos; chamadas imperativas são executadas usando novas instâncias de classes em seu código. Algumas chamadas podem ser executadas somente de maneira imperativa, outras podem ser executadas somente de maneira declarativa e algumas chamadas podem ser executadas de ambas as maneiras. Para obter mais informações, consulte Segurança declarativa e Segurança obrigatória.

  • Bibliotecas de classe seguras: Uma biblioteca de classe segura usa demandas de segurança para garantir que os chamadores da biblioteca tenham permissão para acessar os recursos expostos pela biblioteca. Por exemplo, uma biblioteca de classe segura pode ter um método para criar arquivos exigiria que os chamadores tenham permissões para criar arquivos. O .NET Framework consiste em bibliotecas de classe segura. Você deve estar ciente das permissões necessárias para acessar qualquer biblioteca que seu código usa. Para obter mais informações, consulte a seção Usando bibliotecas de classe segura posteriormente neste tópico.

  • Código transparente: Iniciando com .NET Framework 4, além da identificação de permissões específicas, você também deve determinar se seu código deve executar como segurança transparente. O código de segurança transparente não pode chamar tipos ou membros identificados como críticos para segurança. Essa regra se aplica ao aplicativo totalmente confiáveis, bem como a aplicativos parcialmente confiáveis. Para obter mais informações, consulte Código transparente de segurança.

A compilação just-in-time (JIT) executa um processo de verificação que examina o código e tenta determinar se o código é do tipo seguro. O código que é testado durante a verificação deve ser de segurança de tipo é chamado código de segurança de tipo verificável. O código pode ser com segurança de tipo, no entanto, talvez não seja segurança de tipo verificável devido às restrições do processo de verificação ou do compilador. Nem todas as linguagens são fortemente tipadas, e alguns compiladores de linguagens, como o Microsoft Visual C++, não podem gerar código gerenciado fortemente tipado verificável. Para determinar se o compilador de linguagem que você usa gera o código com segurança verificável consulte a documentação do compilador. Se você usar um compilador de linguagem que gera código seguro do tipo verificável somente quando você evita determinadas construções linguísticas, você pode querer usar a ferramenta PEVerify para determinar se seu código é seguro do tipo verificável.

O código que não é segurança de tipo verificável pode tentar executar se a política de segurança permite que o código ignore a verificação. No entanto, como a segurança de tipo é uma parte essencial do mecanismo de tempo de execução para isolar assemblies, a segurança não pode ser confiavelmente imposta se o código viola as regras de segurança de tipo. Por padrão, o código que não possui segurança de tipo pode executar somente se for originado do computador local. Portanto, o código móvel deve ser seguro de tipo.

Se suas solicitações de código e é garantida as permissões necessárias pela biblioteca de classes, será permitido acessar a biblioteca e os recursos que a biblioteca expõe serão protegidos contra acesso não autorizado. Se seu código não tem as permissões apropriadas, não será permitido acessar a biblioteca de classes, e o código mal-intencionado não será capaz de usar seu código para acessar indiretamente recursos protegidos. Outro código que chamar seu código também deve ter permissão para acessar a biblioteca. Caso contrário, seu código será impedido de executar também.

A segurança de acesso do código não elimina a possibilidade de falha humana no código de escrita. No entanto, se seu aplicativo usa bibliotecas de classes seguras para acessar recursos protegidos, o risco de segurança para o código do aplicativo é diminuído, porque bibliotecas de classes são minuciosamente examinadas para a problemas de segurança potenciais.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft