Assemblies transparente de segurança não devem conter código crítico de segurança

TypeName

SecurityTransparentAssembliesShouldNotContainSecurityCriticalCode

CheckId

CA2127

Category (Categoria)

Microsoft.segurança

Quebrando alterar

Quebrando

Causa

O código Critical não pode ocorrer em um assembly de 100 % transparente.

Descrição da regra

Esta regra analisa 100 % assemblies transparente para quaisquer anotações SecurityCritical no nível do método, campo e tipo.Essa regra é útil porque ele sinaliza código que existe em um assembly de 100 % transparente.Código em um conjunto de 100 % transparente aciona uma exceção de segurança ou um comportamento inesperado em time de execução.

The .NET Framework 2.0 introduziu um recurso chamado transparência.Métodos individuais, campos, interfaces, classes e tipos podem ser transparente ou crítico.

Código transparente não é permitido para elevar privilégios de segurança.Portanto, quaisquer permissões são concedidas ou exigidos dele são passados por meio do código automaticamente para o chamador ou AppDomain do host.Exemplos de 'elevações' incluem Asserts, LinkDemands, SuppressUnmanagedCode e código 'sem segurança'.

Um assembly pode ser 100 % transparente, 100 % críticos ou mista transparente/crítica.

Para marcar um assembly sistema autônomo 100 % transparente, adicione o atributo de nível de assembly:

 [assembly:System.Security.SecurityTransparent]

Para marcar um assembly sistema autônomo 100 % críticos, adicione o atributo de nível de assembly:

[assembly:System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)]

Para marcar um assembly sistema autônomo misto transparente/crítica, adicione o atributo de nível de assembly:

 [assembly:System.Security.SecurityCritical]

Código transparente não pode ocorrer em um assembly crítica 100 % e o código critical não pode ocorrer em um assembly de 100 % transparente.

Como corrigir violações

Para resolver o problema, marcar o assembly sistema autônomo misto transparente/crítica, ou remova o atributo SecurityCritical do código com sinalizadores.

Quando suprimir avisos

Elimina uma mensagem a partir dessa regra.