CA2130: Stałe krytycznych zabezpieczeń powinny być przezroczyste
TypeName |
ConstantsShouldBeTransparent |
CheckId |
CA2130 |
Kategoria |
Microsoft.Security |
Zmiana kluczowa |
Kluczowa |
Stałe pole lub element członkowski wyliczenia jest oznaczony atrybutem SecurityCriticalAttribute.
Wymuszanie przezroczystości nie jest wymuszane dla wartości stałych, ponieważ kompilatory wbudowują stałe wartości, tak aby nie było wymagane żadne wyszukiwanie w czasie wykonywania.Stałe pola powinny być przezroczyste dla zabezpieczeń tak, aby recenzenci kodu nie zakładali, że przezroczysty kod nie może uzyskać dostępu do stałej.
Aby naprawić naruszenie tej zasady, należy usunąć atrybut SecurityCritical z pola lub wartości.
Nie należy pomijać ostrzeżenia dotyczącego tej reguły.
W poniższych przykładach wartość wyliczenia EnumWithCriticalValues.CriticalEnumValue i stała CriticalConstant wywołują ostrzeżenie.Aby rozwiązać problemy, należy usunąć atrybut [SecurityCritical] aby uczynić je przezroczystymi względem zabezpieczeń.
using System;
using System.Security;
//[assembly: SecurityRules(SecurityRuleSet.Level2)]
//[assembly: AllowPartiallyTrustedCallers]
namespace TransparencyWarningsDemo
{
public enum EnumWithCriticalValues
{
TransparentEnumValue,
// CA2130 violation
[SecurityCritical]
CriticalEnumValue
}
public class ClassWithCriticalConstant
{
// CA2130 violation
[SecurityCritical]
public const int CriticalConstant = 21;
}
}