Udostępnij za pośrednictwem


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;
    }
}