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 de nomes fortes e aplica-se somente a nível 1 assemblies.This topic addresses the behavior of strong-named assemblies and applies only to Level 1 assemblies. Código transparente de segurança, nível 2 assemblies no .NET Framework 4.NET Framework 4 ou posterior, não são afetados por nomes fortes.Security-Transparent Code, Level 2 assemblies in the .NET Framework 4.NET Framework 4 or later are not affected by strong names. Para obter mais informações sobre as 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.

Aplicativos que recebem menos do que a confiança total do seu host ou de área restrita não tem permissão para chamar compartilhado bibliotecas gerenciadas, a menos que o gravador da biblioteca permita, especificamente, através do uso do AllowPartiallyTrustedCallersAttribute 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, autores de aplicativos devem estar cientes de que algumas bibliotecas não estarão disponíveis para eles em 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 que executa em uma confiança parcial sandbox e não é a 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 deve ser executado em um contexto parcialmente confiável ou ser 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 não funcione em um contexto parcialmente confiável, você deve considerar 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:

  • Bibliotecas devem ser assinadas com um nome forte para ser compartilhado por vários aplicativos.Libraries must be signed with a strong name in order to be shared by multiple applications. Nomes fortes permitir que seu código seja colocado no cache de assembly global ou adicionado à lista de confiança total de um modo seguro AppDomain, e permitem que os consumidores verificar se uma determinada parte do código móvel realmente provém 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, nomes fortes nível 1 bibliotecas compartilhadas executam implícita LinkDemand completa confiar automaticamente, sem o gravador da biblioteca precisar fazer algo.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 tem a confiança total, mas ainda tenta chamar uma biblioteca, o tempo de execução lança um SecurityException e o chamador não tem 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 automático LinkDemand e evitar a exceção de que está sendo lançada, você pode colocar o AllowPartiallyTrustedCallersAttribute atributo no escopo do assembly de compartilhado biblioteca.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. Este atributo permite suas bibliotecas ser chamado do código parcialmente confiável.This attribute allows your libraries to be called from partially trusted managed code.

  • Código parcialmente confiável que é concedido acesso a uma biblioteca com esse atributo é ainda sujeita a mais restrições definidas pelo AppDomain.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 é possível através de programação para código parcialmente confiável chame uma biblioteca que não tem o AllowPartiallyTrustedCallersAttribute atributo.There is no programmatic way for partially trusted code to call a library that does not have the AllowPartiallyTrustedCallersAttribute attribute.

Bibliotecas que são particulares a um aplicativo específico não exigem um nome forte ou AllowPartiallyTrustedCallersAttribute de atributos e não pode ser referenciado por códigos possivelmente mal-intencionados 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 está protegido contra uso indevido intencional ou não pelo código parcialmente confiável de móvel sem que o desenvolvedor precisar fazer mais nada.Such code is protected against intentional or unintentional misuse by partially trusted mobile code without the developer having to do anything extra.

Considere a possibilidade de 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:

  • Código que foi testado cuidadosamente quanto a 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 fortes 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 (se parcialmente ou totalmente confiável) assinado com um nome forte que será chamado pelo código que é 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 do .NET Framework não tem o AllowPartiallyTrustedCallersAttribute de atributos e não pode ser chamado 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

Segurança de acesso do códigoCode Access Security