Usando bibliotecas de código parcialmente confiávelUsing Libraries from Partially Trusted Code

Cuidado

Segurança de Acesso do Código e Código Parcialmente ConfiávelCode Access Security and Partially Trusted Code

O .NET Framework fornece um mecanismo para a imposição de níveis variáveis de confiança em códigos diferentes em execução no mesmo aplicativo chamado CAS (Segurança de Acesso do Código).The .NET Framework provides a mechanism for the enforcement of varying levels of trust on different code running in the same application called Code Access Security (CAS). O CAS no .NET Framework não deve ser usado como um mecanismo de imposição de limites de segurança com base na origem do código ou em outros aspectos da identidade.Code Access Security in .NET Framework should not be used as a mechanism for enforcing security boundaries based on code origination or other identity aspects. Estamos atualizando nossas diretrizes para refletir que o CAS e o Código Transparente de Segurança não terão suporte como um limite de segurança com código parcialmente confiável, especialmente o código de origem desconhecida.We are updating our guidance to reflect that Code Access Security and Security-Transparent Code will not be supported as a security boundary with partially trusted code, especially code of unknown origin. Não aconselhamos carregar e executar códigos de origens desconhecidas sem a adoção de medidas de segurança alternativas no local.We advise against loading and executing code of unknown origins without putting alternative security measures in place.

Essa política é aplicável à todas as versões do .NET Framework, mas não é aplicável ao .NET Framework incluído no Silverlight.This policy applies to all versions of .NET Framework, but does not apply to the .NET Framework included in Silverlight.

Observação

Este tópico aborda o comportamento de assemblies com nomes fortes e aplica-se somente a assemblies de nível 1 .This topic addresses the behavior of strong-named assemblies and applies only to Level 1 assemblies. O código de segurança transparente, os assemblies de nível 2 no .NET Framework 4 ou posterior não são afetados por nomes fortes.Security-Transparent Code, Level 2 assemblies in the .NET Framework 4 or later are not affected by strong names. Para obter mais informações sobre alterações no sistema de segurança, consulte alterações de segurança.For more information about changes to the security system, see Security Changes.

Os aplicativos que recebem menos do que a confiança total do host ou da área restrita não têm permissão para chamar bibliotecas gerenciadas compartilhadas, a menos que o gravador AllowPartiallyTrustedCallersAttribute de biblioteca permita especificamente o uso do atributo.Applications that receive less than full trust from their host or sandbox are not allowed to call shared managed libraries unless the library writer specifically allows them to through the use of the AllowPartiallyTrustedCallersAttribute attribute. Portanto, os gravadores de aplicativo devem estar cientes de que algumas bibliotecas não estarão disponíveis para eles por meio de um contexto parcialmente confiável.Therefore, application writers must be aware that some libraries will not be available to them from a partially trusted context. Por padrão, todo o código que é executado em uma área de segurança parcialmente confiável e que não está na lista de assemblies de confiança total é parcialmente confiável.By default, all code that executes in a partial-trust sandbox and is not in the list of full-trust assemblies is partially trusted. Se você não espera que seu código seja executado a partir de um contexto parcialmente confiável ou que seja chamado por código parcialmente confiável, você não precisa se preocupar com as informações nesta seção.If you do not expect your code to be executed from a partially trusted context or to be called by partially trusted code, you do not have to be concerned about the information in this section. No entanto, se você escrever código que deve interagir com código parcialmente confiável ou operar de um contexto parcialmente confiável, considere os seguintes fatores:However, if you write code that must interact with partially trusted code or operate from a partially trusted context, you should consider the following factors:

  • As bibliotecas devem ser assinadas com um nome forte para serem compartilhadas por vários aplicativos.Libraries must be signed with a strong name in order to be shared by multiple applications. Nomes fortes permitem que seu código seja colocado no cache de assembly global ou adicionado à lista de confiança total de uma área restrita AppDomaine permite que os consumidores verifiquem se um determinado código móvel realmente se origina de você.Strong names allow your code to be placed in the global assembly cache or added to the full-trust list of a sandboxing AppDomain, and allow consumers to verify that a particular piece of mobile code actually originates from you.

  • Por padrão, as bibliotecas compartilhadas de nível 1 de nome forte executam um LinkDemand implícito para confiança total automaticamente, sem que o gravador de biblioteca tenha que fazer nada.By default, strong-named Level 1 shared libraries perform an implicit LinkDemand for full trust automatically, without the library writer having to do anything.

  • Se um chamador não tiver confiança total, mas ainda tentar chamar essa biblioteca, o tempo de execução lançará SecurityException um e o chamador não terá permissão para vincular à biblioteca.If a caller does not have full trust but still tries to call such a library, the runtime throws a SecurityException and the caller is not allowed to link to the library.

  • Para desabilitar o LinkDemand automático e impedir que a exceção seja gerada, você pode posicionar o atributo AllowPartiallyTrustedCallersAttribute no escopo do assembly de uma biblioteca compartilhada.In order to disable the automatic LinkDemand and prevent the exception from being thrown, you can place the AllowPartiallyTrustedCallersAttribute attribute on the assembly scope of a shared library. Esse atributo permite que suas bibliotecas sejam chamadas a partir de código gerenciado parcialmente confiável.This attribute allows your libraries to be called from partially trusted managed code.

  • O AppDomaincódigo parcialmente confiável que recebe acesso a uma biblioteca com esse atributo ainda está sujeito a restrições adicionais definidas pelo.Partially trusted code that is granted access to a library with this attribute is still subject to further restrictions defined by the AppDomain.

  • Não há nenhuma maneira programática para código parcialmente confiável chamar uma biblioteca que não tem o atributo AllowPartiallyTrustedCallersAttribute .There is no programmatic way for partially trusted code to call a library that does not have the AllowPartiallyTrustedCallersAttribute attribute.

As bibliotecas que são privadas para um aplicativo específico não exigem um nome forte ou o atributo AllowPartiallyTrustedCallersAttribute e não podem ser referenciadas por código potencialmente mal-intencionado fora do aplicativo.Libraries that are private to a specific application do not require a strong name or the AllowPartiallyTrustedCallersAttribute attribute and cannot be referenced by potentially malicious code outside the application. Esse código é protegido contra uso indevido intencional ou não intencional pelo código móvel parcialmente confiável, sem que o desenvolvedor precise fazer algo extra.Such code is protected against intentional or unintentional misuse by partially trusted mobile code without the developer having to do anything extra.

Você deve considerar habilitar explicitamente o uso por código parcialmente confiável para os seguintes tipos de código:You should consider explicitly enabling use by partially trusted code for the following types of code:

  • O código que foi testado de vulnerabilidades de segurança e está em conformidade com as diretrizes descritas em diretrizes de codificação segura.Code that has been diligently tested for security vulnerabilities and is in compliance with the guidelines described in Secure Coding Guidelines.

  • Bibliotecas de código de nome forte que são escritas especificamente para cenários parcialmente confiáveis.Strong-named code libraries that are specifically written for partially trusted scenarios.

  • Todos os componentes (parcialmente ou totalmente confiáveis) assinados com um nome forte que será chamado pelo código baixado da Internet.Any components (whether partially or fully trusted) signed with a strong name that will be called by code that is downloaded from the Internet.

Observação

Algumas classes na biblioteca de classes de .NET Framework não têm o atributo AllowPartiallyTrustedCallersAttribute e não podem ser chamadas por código parcialmente confiável.Some classes in the .NET Framework class library do not have the AllowPartiallyTrustedCallersAttribute attribute and cannot be called by partially trusted code.

Consulte tambémSee also