Share via


Usando bibliotecas de código parcialmente confiáveis

Observação

Este tópico aborda o comportamento de assemblies de nome forte e se aplica somente ao nível 1 assemblies.Código transparente para a segurança de nível 2Assemblies in a .NET Framework versão 4 ou posterior não são afetados por nomes de alta segurança.Para obter mais informações sobre alterações no sistema de segurança, consulte Alterações de segurança na.NET Framework 4.

Aplicativos que recebem menos de confiança total do host ou do modo seguro não são permitidas para chamar compartilhada gerenciada bibliotecas, a menos que o escritor da biblioteca os permita, especificamente através do uso da atributo AllowPartiallyTrustedCallersAttribute. Portanto, os autores de aplicativos devem estar cientes de que algumas bibliotecas não estarão disponíveis para eles em um contexto parcialmente confiável. Por padrão, todo o código que é executado em uma relação de confiança parcial seguro e não está na lista de assemblies de confiança total é parcialmente confiável. Se você não espera que seu código para ser executado a partir de um contexto parcialmente confiável ou a ser chamado pelo código parcialmente confiável, você não precisará se preocupar com as informações nesta seção. No entanto, se você escrever código que deve interagir com código parcialmente confiável ou que operam em um contexto parcialmente confiável, você deve considerar os seguintes fatores:

  • Bibliotecas devem ser assinadas com um nome forte para ser compartilhado por vários aplicativos. Nomes fortes permitem que seu código para ser colocado no cache global de assemblies ou é adicionado à lista de confiança total de um modo seguro AppDomain, e permitir que os consumidores verificar que uma parte específica do código móvel realmente originada você.

  • Por padrão, fortes nível 1 bibliotecas compartilhadas realizar um implícito LinkDemand completa confia automaticamente, sem ter de fazer algo o escritor da biblioteca.

  • Se um chamador não tem confiança total, mas ainda tenta chamar uma biblioteca, o runtime lança um SecurityException e o chamador não é permitido para vincular a biblioteca.

  • Para desativar o automático LinkDemand e evitar a exceção de ser lançada, você pode colocar o AllowPartiallyTrustedCallersAttribute atributo no escopo do assembly de uma biblioteca compartilhada. Este atributo permite suas bibliotecas para serem chamados do código gerenciado parcialmente confiável.

  • Código parcialmente confiável que recebeu acesso a uma biblioteca com esse atributo ainda está sujeito a mais restrições definidas pelo AppDomain.

  • Não há nenhuma maneira programática para código parcialmente confiável chamar uma biblioteca que não tem o AllowPartiallyTrustedCallersAttribute atributo.

Bibliotecas que são particulares a um aplicativo específico não exigem um nome forte ou o AllowPartiallyTrustedCallersAttribute de atributo e não pode ser referenciado por código potencialmente malicioso fora do aplicativo. Esse código é protegido contra uso indevido de intencional ou não pelo código móvel parcialmente confiáveis sem que o desenvolvedor tenha que fazer nada extra.

Considere a possibilidade de ativar explicitamente o uso pelo código parcialmente confiável para os seguintes tipos de código:

  • Código que foi testado cuidadosamente as vulnerabilidades de segurança e está em conformidade com as diretrizes descritas em Diretrizes para codificação segura.

  • Bibliotecas de código fortes que são escritas especificamente para cenários parcialmente confiáveis.

  • Todos os componentes (seja total ou parcialmente confiável) assinados com um nome forte que será chamado pelo código que é baixado da Internet.

Observação

Algumas classes do.NET Framework class library não tem o AllowPartiallyTrustedCallersAttribute de atributo e não pode ser chamado pelo código parcialmente confiável.See .NET Framework conjuntos marcados com AllowPartiallyTrustedCallersAttribute para obter uma lista de classes que pode ser chamado pelo código parcialmente confiável.

Consulte também

Conceitos

Segurança de Acesso de código

Histórico de alterações

Date

History

Motivo

Julho de 2010

Pequenas atualizações de conteúdo.

Correção de bug de conteúdo.