Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao criar um assembly, você pode especificar um conjunto de permissões que o assembly requer para ser executado. Se determinadas permissões são concedidas ou não a um assembly é algo que se baseia na evidência.
Há duas maneiras distintas de a evidência ser usada:
A evidência de entrada é mesclada com as evidências coletadas pelo carregador para criar um conjunto final de evidências usadas para resolução de políticas. Os métodos que usam essa semântica incluem Assembly.Load, Assembly.LoadFrom e Activator.CreateInstance.
A evidência de entrada é usada sem alterações como o conjunto final de evidências usadas para resolução de políticas. Os métodos que usam essa semântica incluem Assembly.Load(byte[]) e AppDomain.DefineDynamicAssembly().
Permissões opcionais podem ser concedidas pela política de segurança configurada no computador em que o assembly será executado. Se você quiser que seu código lide com todas as possíveis exceções de segurança, você pode fazer um dos seguintes procedimentos:
Insira uma solicitação de permissão para todas as permissões que seu código deve ter e lide antecipadamente com a falha de tempo de carga que ocorre se as permissões não forem concedidas.
Não use uma solicitação de permissão para obter permissões que seu código possa precisar, mas esteja preparado para lidar com exceções de segurança se as permissões não forem concedidas.
Observação
A segurança é uma área complexa e você tem muitas opções para escolher. Para obter mais informações, consulte Os principais conceitos de segurança.
No momento do carregamento, a evidência do assembly é usada como entrada para uma política de segurança. A política de segurança é estabelecida pela empresa e pelo administrador do computador, bem como pelas configurações de política do usuário, e determina o conjunto de permissões concedidas a todo o código gerenciado quando executado. A política de segurança pode ser estabelecida para o editor do assembly (se ele tiver uma assinatura gerada por uma ferramenta de assinatura), para o site e a zona (que era um conceito do Internet Explorer) de onde o assembly foi baixado, ou para o nome forte do assembly. Por exemplo, o administrador de um computador pode estabelecer uma política de segurança que permite que todos os códigos baixados de um site da Web e assinados por uma determinada empresa de software acessem um banco de dados em um computador, mas não concede acesso para gravar no disco do computador.
Assemblies de nome forte e ferramentas de assinatura
Aviso
Não confie em nomes fortes para segurança. Eles fornecem apenas uma identidade exclusiva.
Você pode assinar um assembly de duas maneiras diferentes, mas complementares: com um nome forte ou usando SignTool.exe (Ferramenta de assinatura). Assinar um assembly com um nome forte adiciona uma criptografia de chave pública ao arquivo que contém o manifesto do assembly. Assinatura de nome forte ajuda a verificar a exclusividade do nome, a evitar falsificação de nome e a fornecer chamadores com uma identidade quando uma referência é resolvida.
Nenhum nível de confiança está associado a um nome forte, o que torna SignTool.exe (Ferramenta de Assinatura) importante. As duas ferramentas de assinatura exigem que um editor prove sua identidade para uma autoridade de terceiros e obtenha um certificado. Esse certificado é inserido em seu arquivo e pode ser usado por um administrador para decidir se deseja confiar na autenticidade do código.
Você pode fornecer tanto um nome forte quanto uma assinatura digital criada usando-se o SignTool.exe (Ferramenta de assinatura) a um assembly, ou pode usar qualquer um sozinho. As duas ferramentas de assinatura podem assinar apenas um arquivo por vez; para um conjunto multifile, você assina o arquivo que contém o manifesto do conjunto. Um nome forte é armazenado no arquivo que contém o manifesto do assembly, mas uma assinatura criada usando SignTool.exe (Sign Tool) é armazenada em um espaço reservado no arquivo PE (portable executable) que contém o manifesto do assembly. A assinatura de um assembly usando o SignTool.exe (Ferramenta de assinatura) pode ser usada (com ou sem um nome forte) quando você já tem uma hierarquia de confiança que se baseia em assinaturas geradas por SignTool.exe (Ferramenta de assinatura) ou quando a sua política usa somente a parte da chave e não verifica uma cadeia de confiança.
Observação
Ao usar um nome forte e uma assinatura gerada por uma ferramenta de assinatura em um assembly, o nome forte deve ser atribuído primeiro.
O Common Language Runtime também executa uma verificação de hash; o manifesto do assembly contém uma lista de todos os arquivos que compõem o assembly, incluindo um hash de cada arquivo conforme ele existia quando o manifesto foi compilado. À medida que cada arquivo é carregado, seus conteúdos passam pelo processo de hash e são comparados com o valor de hash armazenado no manifesto. Se os dois hashes não corresponderem, o assembly não será carregado.
A nomenclatura forte e a assinatura digital usando a SignTool.exe (Ferramenta de Assinatura) garantem a integridade por meio de assinaturas e certificados digitais. Todas as tecnologias mencionadas, ou seja, verificação de hash, nomenclatura forte e assinatura usando SignTool.exe (Ferramenta de Assinatura), funcionam em conjunto para garantir que o assembly não tenha sido alterado de forma alguma.