DynamicMethod.IsSecurityCritical Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém um valor que indica se o método dinâmico atual é crítico para segurança ou crítico para segurança e disponível no código transparente e, portanto, pode executar operações críticas.
public:
virtual property bool IsSecurityCritical { bool get(); };
public override bool IsSecurityCritical { get; }
member this.IsSecurityCritical : bool
Public Overrides ReadOnly Property IsSecurityCritical As Boolean
Valor da propriedade
true
se o método dinâmico atual for crítico de segurança ou de segurança crítica; false
se for transparente.
Exceções
O método dinâmico não tem um corpo de método.
Comentários
As IsSecurityCriticalpropriedades , IsSecuritySafeCriticale IsSecurityTransparent relatam o nível de transparência do método dinâmico, conforme determinado pelo CLR (Common Language Runtime). As combinações destas propriedades são mostradas na seguinte tabela:
Nível de segurança | IsSecurityCritical | IsSecuritySafeCritical | IsSecurityTransparent |
---|---|---|---|
Crítico | true |
false |
false |
Segurança crítica | true |
true |
false |
Transparente | false |
false |
true |
Usar essas propriedade é muito mais simples que examinar as anotações de segurança de um assembly e seus tipos, verificando o nível de confiança atual e tentando duplicar as regras do runtime.
A transparência de um método dinâmico depende do módulo ao qual ele está associado. Se o método dinâmico estiver associado a um tipo em vez de um módulo, sua transparência dependerá do módulo que contém o tipo. Os métodos dinâmicos não têm anotações de segurança, portanto, recebem a transparência padrão para o módulo associado.
Métodos dinâmicos hospedados anonimamente são sempre transparentes, pois o módulo fornecido pelo sistema que os contém é transparente.
A transparência de um método dinâmico associado a um assembly confiável (ou seja, um assembly de nome forte instalado no cache de assembly global) é descrita na tabela a seguir.
Anotação de assembly Transparência de nível 1 Transparência de nível 2 Totalmente transparente Transparente Transparente Totalmente crítico Crítico Crítico Transparência mista Transparente Transparente Independente de segurança Crítico para segurança Crítico Por exemplo, se você associar um método dinâmico a um tipo que está em mscorlib.dll, que tem nível 2 de transparência mista, o método dinâmico é transparente e não pode executar código crítico. Para obter informações sobre níveis de transparência, consulte Código Transparente de Segurança, Nível 1 e Código Transparente de Segurança, Nível 2.
Observação
Associar um método dinâmico a um módulo em um assembly de nível 1 confiável que seja independente de segurança, como System.dll, não permite elevação de confiança. Se o conjunto de concessões do código que chama o método dinâmico não incluir o conjunto de concessão de System.dll (ou seja, confiança total), SecurityException será gerado quando o método dinâmico for chamado.
A transparência de um método dinâmico associado a um assembly parcialmente confiável depende de como o assembly é carregado. Se o assembly for carregado com confiança parcial (por exemplo, em um domínio de aplicativo em área restrita), o runtime ignorará as anotações de segurança do assembly. O assembly e todos os seus tipos e membros, incluindo métodos dinâmicos, são tratados como transparentes. O runtime prestará atenção às anotações de segurança somente se o assembly de confiança parcial for carregado com confiança total (por exemplo, no domínio de aplicativo padrão de um aplicativo da área de trabalho). Nesse caso, o runtime atribui ao método dinâmico a transparência padrão para métodos de acordo com as anotações do assembly.
Para obter mais informações sobre emissão de reflexão e transparência, consulte Problemas de segurança na emissão de reflexão. Para obter informações sobre transparência, consulte Alterações de segurança.