CA2131: Güvenlik kritik türleri tür eşdeğerliğine katılamaz
TürAdı |
CriticalTypesMustNotParticipateInTypeEquivalence |
CheckId |
CA2131 |
Kategori |
Microsoft.Security |
Bozan Değişiklik |
Bozan |
Türün eşdeğerliğine ve bir tür kendisine ya da bir üyeye ya da türün alanına katılan bir tür; SecurityCriticalAttribute özniteliğiyle işaretlemiştir.
Bu kural, herhangi kritik türleri veya kritik yöntemleri içeren türleri veya tür eşdeğerliğine katılan alanları tetikler.CLR böyle bir türü algıladığında, çalışma zamanında TypeLoadException ile birlikte yüklemek başarısız olur.Tipik olarak bu kural, kullanıcılar tlbimpe güvenmek yerine el ile tür eşdeğerliği uyguladığında başlar ve derleyiciler tür eşdeğerliği yapar.
Bu kuralın bir ihlalini düzeltmek için SecurityCritical özniteliğini kaldırın.
Bu kuraldan bir uyarı gizlemeyin.
Aşağıdaki örnekler, bir arabirim, bir yöntem ve bu kuralın ateşlenmesine neden olan bir alanı göstermektedir.
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;
}
}