Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Ao criar um assembly, você pode especificar um conjunto de permissões que o assembly requer para ser executado. Se certas permissões são concedidas ou não a uma assembleia é baseado em evidências.
Existem duas formas distintas de utilizar as provas:
As evidências de entrada são mescladas com as evidências coletadas pelo carregador para criar um conjunto final de evidências usadas para a resolução de políticas. Os métodos que usam essa semântica incluem Assembly.Load, Assembly.LoadFrom e Activator.CreateInstance.
As evidências de entrada são usadas inalteradas como o conjunto final de evidências usadas para a 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 diretiva de segurança definida no computador onde o assembly será executado. Se quiser que seu código manipule todas as possíveis exceções de segurança, siga um destes procedimentos:
Insira uma solicitação de permissão para todas as permissões que seu código deve ter e trate antecipadamente a falha de tempo de carregamento 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 Principais conceitos de segurança.
No momento do carregamento, as evidências da assemblagem são usadas como entrada para a política de segurança. A diretiva de segurança é estabelecida pela empresa e pelo administrador do computador, bem como pelas configurações de diretiva 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 da assemblagem (se tiver uma assinatura gerada pela ferramenta de assinatura digital), para o site e a zona (um conceito do Internet Explorer) de onde a assemblagem foi transferida ou para o nome forte da assemblagem. Por exemplo, o administrador de um computador pode estabelecer uma diretiva de segurança que permite que todo o código baixado de um site e assinado por uma determinada empresa de software acesse um banco de dados em um computador, mas não concede acesso para gravar no disco do computador.
Conjuntos com nomes fortes e ferramentas de assinatura
Advertência
Não confie em nomes fortes para a segurança. Eles fornecem apenas uma identidade única.
Você pode assinar uma montagem de duas maneiras diferentes, mas complementares: com um nome forte ou usando SignTool.exe (Ferramenta de Assinatura). A assinatura de um assembly com um nome forte adiciona criptografia de chave pública ao arquivo que contém o manifesto do assembly. A assinatura de nome forte ajuda a verificar a unicidade do nome, prevenir a falsificação de nomes e fornecer uma identidade verificada aos chamadores quando uma referência é resolvida.
Nenhum nível de confiança está associado a um nome forte, o que torna SignTool.exe (Sign Tool) importante. As duas ferramentas de assinatura exigem que um editor prove sua identidade a uma autoridade terceirizada e obtenha um certificado. Esse certificado é então incorporado ao seu arquivo e pode ser usado por um administrador para decidir se confia na autenticidade do código.
Você pode dar um nome forte e uma assinatura digital criada com SignTool.exe (Ferramenta de Assinatura) a uma assemblagem, ou então usar apenas um deles. As duas ferramentas de assinatura podem assinar apenas um arquivo de cada vez; Para um assembly multifile, você assina o arquivo que contém o manifesto do assembly. 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 slot reservado no arquivo executável portátil (PE) que contém o manifesto do assembly. A assinatura de um assembly usando SignTool.exe (Ferramenta de Assinatura) pode ser utilizada (com ou sem um nome forte) quando já tem uma hierarquia de confiança que dependa de assinaturas geradas pelaSignTool.exe (Ferramenta de Assinatura), ou quando a sua política utiliza apenas a parte da chave e não verifica uma cadeia de confiança.
Observação
Ao usar simultaneamente um nome forte e uma assinatura digital numa 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 existia quando o manifesto foi criado. À medida que cada arquivo é carregado, seu conteúdo é colocado em hash e comparado com o valor de hash armazenado no manifesto. Se os dois hashes não corresponderem, a montagem falhará ao carregar.
A forte nomenclatura e assinatura usando SignTool.exe (Sign Tool) garantem a integridade através de assinaturas digitais e certificados. Todas as tecnologias mencionadas, ou seja, verificação de hash, nomenclatura forte e assinatura usando SignTool.exe (Sign Tool), trabalham juntas para garantir que o assembly não tenha sido alterado de forma alguma.