CA2136: Üyeler çakışan saydamlık ek açıklamalarına sahip olmamalıdır
Ürün | Değer |
---|---|
RuleId | CA2136 |
Kategori | Microsoft.Security |
Hataya neden olan değişiklik | Yeni |
Neden
Bu kural, bir tür üyesi, üyenin bir System.Security kapsayıcısının güvenlik özniteliğinden farklı bir saydamlığa sahip bir güvenlik özniteliğiyle işaretlendiğinde tetiklenir.
Dekont
Bu kural kullanım dışı bırakıldı. Daha fazla bilgi için bkz . Kullanım dışı kurallar.
Kural açıklaması
Saydamlık nitelikleri, geniş kapsam kodlu öğelerden daha küçük kapsamlı öğelere uygulanır. Geniş kapsamı ile kod öğelerinin saydamlık öznitelikleri ilk öğeden kapsayan kod öğelerinin saydam öznitelikleri önceliklidir. Örneğin, özniteliğiyle SecurityCriticalAttribute işaretlenmiş bir sınıf, özniteliğiyle SecuritySafeCriticalAttribute işaretlenmiş bir yöntem içeremez.
İhlalleri düzeltme
Bu ihlali düzeltmek için, güvenlik özniteliğini daha düşük kapsama sahip kod öğesinden kaldırın veya özniteliğini içeren kod öğesiyle aynı olacak şekilde değiştirin.
Uyarıların ne zaman bastırılması gerekiyor?
Bu kuraldan gelen uyarıları gizlemeyin.
Örnek
Aşağıdaki örnekte, bir yöntem özniteliğiyle SecuritySafeCriticalAttribute işaretlenir ve özniteliğiyle işaretlenmiş bir sınıfın SecurityCriticalAttribute üyesidir. Güvenlik güvenli özniteliği kaldırılmalıdır.
using System;
using System.Security;
namespace TransparencyWarningsDemo
{
[SecurityCritical]
public class CriticalClass
{
// CA2136 violation - this method is not really safe critical, since the larger scoped type annotation
// has precidence over the smaller scoped method annotation. This can be fixed by removing the
// SecuritySafeCritical attribute on this method
[SecuritySafeCritical]
public void SafeCriticalMethod()
{
}
}
}
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin