CA2130: Krytyczne stałe zabezpieczeń powinny być przezroczyste
TypeName |
ConstantsShouldBeTransparent |
CheckId |
CA2130 |
Kategoria |
Microsoft.Security |
Zmiana kluczowa |
Kluczowa |
Przyczyna
Stałe pole lub element członkowski wyliczenia jest oznaczony atrybutem SecurityCriticalAttribute.
Opis reguły
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.
Jak naprawić naruszenia
Aby naprawić naruszenie tej zasady, należy usunąć atrybut SecurityCritical z pola lub wartości.
Kiedy pominąć ostrzeżenia
Nie należy pomijać ostrzeżenia dotyczącego tej reguły.
Przykład
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;
}
}