CA2131: Tipos críticos de segurança podem não participar da equivalência de tipo
Item | Valor |
---|---|
RuleId | CA2131 |
Categoria | Microsoft.Security |
Alteração da falha | Quebra |
Causa
Um tipo participa da equivalência do tipo e o próprio tipo, ou um membro ou campo do tipo, é marcado com o atributo SecurityCriticalAttribute.
Observação
Esta regra foi preterida. Para obter mais informações, confira Regras preteridas.
Descrição da regra
Esta regra é acionada em qualquer tipo crítico ou em tipos que contenham métodos críticos ou campos que estejam participando da equivalência do tipo. Ao detectar um tipo assim, o CLR não o carrega com um TypeLoadException em tempo de execução. Normalmente, essa regra só é acionada quando usuários implementam equivalência de tipo manualmente, em vez de depender de tlbimp e dos compiladores para fazer a equivalência do tipo.
Como corrigir violações
Para corrigir uma violação dessa regra, remova o atributo SecurityCritical.
Quando suprimir avisos
Não suprima um aviso nessa regra.
Exemplo
Os exemplos a seguir demonstram uma interface, um método e um campo que fará com que essa regra seja acionada.
using System;
using System.Security;
using System.Runtime.InteropServices;
[assembly: SecurityRules(SecurityRuleSet.Level2)]
[assembly: AllowPartiallyTrustedCallers]
namespace TransparencyWarningsDemo
{
// CA2131 error - critical type participating in equivilance
[SecurityCritical]
[TypeIdentifier("3a5b6203-2bf1-4f83-b5b4-1bdc334ad3ea", "ICriticalEquivilentInterface")]
public interface ICriticalEquivilentInterface
{
void Method1();
}
[TypeIdentifier("3a5b6203-2bf1-4f83-b5b4-1bdc334ad3ea", "ITransparentEquivilentInterface")]
public interface ITransparentEquivilentInterface
{
// CA2131 error - critical method in a type participating in equivilance
[SecurityCritical]
void CriticalMethod();
}
[SecurityCritical]
[TypeIdentifier("3a5b6203-2bf1-4f83-b5b4-1bdc334ad3ea", "ICriticalEquivilentInterface")]
public struct EquivilentStruct
{
// CA2131 error - critical field in a type participating in equivalence
[SecurityCritical]
public int CriticalField;
}
}
Confira também
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de