Aracılığıyla paylaş


Güvenlik Uyarıları

Güvenlik uyarıları, daha güvenli kütüphaneleri ve uygulamaları destekler.Bu uyarılar, programınızdaki güvenlik açıklarını önlemeye yardımcı olur.Bu uyarılardan birini devre dışı bırakırsanız, bunun sebebini kodunuzda açıkça işaretlemelisiniz ve ayrıca geliştirme projeniz için güvenlik çalışanını bilgilendirmelisiniz.

Bu Bölümde

Kural

Açıklama

CA2100: SQL sorgularını güvenlik açıkları için inceleyin

Bir yöntem, yönteme dize değişkeninden oluşturulmuş dize kullanarak System.Data.IDbCommand.CommandText özelliğini ayarlar.Bu kural, dize değişkeninin kullanıcı girişi içerdiğini varsayar.Kullanıcı girişi ile oluşan SQL komut dizesi, SQL enjeksiyon saldırılarına karşı savunmasız durumdadır.

CA2102: CLSCompliant olmayan özel durumları genel işleyiciler içinde yakalayın

RuntimeCompabilityAttribute ile işaretlenmemiş veya RuntimeCompability (WrapNonExceptionThrows = yanlış) ile işaretlenmiş derlemedeki bir üye, System.Exception işleyen yakalama bloğu içerir ve hemen arkasından gelen genel bir yakalama bloğu içermez.

CA2103: Kesinlik temelli güvenliği gözden geçirin

Bir yöntem zorunlu güvenlik kullanır ve durum bilgileri veya dönüş değerleri kullanarak izin oluşturursa, izin talebi etkin durumdayken değişebilir.Bildirime dayanan güvenliği mümkün olduğunca kullanın.

CA2104: Salt okunur kesilebilir başvuru türleri bildirmeyin

Dışarıdan görünen bir tür, kesilebilir başvuru türü olan dışarıdan görünen bir salt okunur alan içerir.Kesilebilir tür, örnek verileri değiştirilebilen bir türdür.

CA2105: Dizi alanları salt okunur olmamalıdır

Bir dizi içeren alana salt okunur (Salt Okunur Visual Basic) değiştirici uyguladığınızda alan, başvurusunu farklı bir diziye değiştiremez.Ancak, dizinin öğeleri salt okunur bir alanda depolanmış olsa da değiştirilebilir.

CA2106: Bildirimlerin güvenliğini sağlayın

Bir yöntem izin ileri sürer ve güvenlik önlemi olmayan çağrı üzerinde gerçekleşir.Güvenlik denetimleri yapmadan herhangi bir güvenlik izni ileri sürmek, kodunuzdaki güvenlik zayıflıklarını yararlanılabilir bırakır.

CA2107: Gözden geçirmeyi reddet ve yalnızca kullanımına izin ver

PermitOnly yöntemini kullanmak ve CodeAccessPermission.Deny güvenlik eylemleri yalnızca .NET Framework güvenliğinin gelişmiş bir bilgiye sahip olanları tarafından kullanılmalıdır.Bu güvenlik eylemlerini kullanan kod güvenlik incelemesi altından geçmelidir.

CA2108: Değer türleri üzerinde bildirimsel güvenliği gözden geçirin

Ortak veya korunan değer türü, Veri Erişim veya Bağlantı Talepleri tarafından güvenlik altına alınır.

CA2109: Görünen olay işleyicileri gözden geçirin

Ortak veya korunan olay işleme yöntemi algılandı.Olay işleme yöntemleri kesinlikle gerekli olmadığı sürece maruz bırakılmamalıdır.

CA2111: İşaretçiler görünür olmamalıdır

İşaretçi özel, içsel veya salt okunur değildir.Kötü amaçlı kod işaretçinin değerini değiştirebilir, potansiyel olarak bellekte rasgele konumlara erişme izni verebilir veya uygulama ya da sistem hatalarına neden olabilir.

CA2112: Güvenli türler alanları açığa çıkarmamalıdır

Ortak veya korumalı tür, ortak alanları içerir ve Bağlantı Talepleri tarafından güvenlik altına alınır.Bağlantı talebi tarafından güvenli türde bir örnek kod erişimi varsa, kod türün alanlarına erişmek için bağlantı talebine sahip değildir.

CA2114: Yöntem güvenliği türün bir üst kümesi olmalıdır

Yöntem, aynı eylem için hem yöntem düzeyine hem de tür düzeyine dayanan güvenliğe sahip olmamalıdır.

CA2115: Yerel kaynaklar kullanırken GC.KeepAlive'ı çağırın

Bu kural, yönetimsiz kod içinde kullanıldığı sırada yönetilmeyen kaynağın sonlandırılması nedeniyle oluşabilecek hataları algılar.

CA2116Ç APTCA yöntemleri yalnızca APTCA yöntemlerini çağırmalıdır

APTCA (AllowPartiallyTrustedCallers) özniteliği tam olarak güvenilen bir derlemede yapılandırıldığında ve derleme, kodu kısmen güvenilmeyen çağrıcılara izin vermeyen başka bir derlemede çalıştırdığında, güvenlik yararlanması mümkündür.

CA2117: APTCA türleri yalnızca APTCA taban türlerini genişletmelidir

APTCA (AllowPartiallyTrustedCallers) özniteliği, tam olarak güvenilen bir derleme üzerinde temsil edildiğinde ve derlemedeki tür, kısmen güvenilmeyen bir çağırıcıya izin vermeyen tür tarafından devralındığında güvenlik yararlanması mümkündür.

CA2118: SuppressUnmanagedCodeSecurityAttribute kullanımını gözden geçir

SuppressUnmanagedCodeSecurityAttribute, COM birlikte çalışma veya platform çağırma kullanan yönetilmeyen kodu yürüten üyeler için varsayılan güvenlik sistemi davranışını değiştirir.Bu öznitelik, öncelikle performansı artırmak için kullanılır; ancak, gelen performans artışı önemli güvenlik riskleri ile gelir.

CA2119: Özel arabirimleri karşılayan yöntemleri mühürleyin

Devralınabilir bir ortak tür, bir içsel (Visual Basic'te Arkadaş) arabirimin geçersiz yöntem uygulamasını sağlar.Bu kuralın ihlalini düzeltmek için yöntemin, derlemenin dışından geçersiz kılınmasını önleyin.

CA2120: Serileştirme oluşturucularının güvenliğini sağlayın

Bu türün, System.Runtime.Serialization.SerializationInfo nesnesi ve System.Runtime.Serialization.StreamingContext nesnesi (seri hale getiren yapıcı imzası) alan bir oluşturucusu vardır.Bu oluşturucu, güvenlik denetimi tarafından güvenli değildir; ancak türdeki en az bir normal oluşturucu güvenlidir.

CA2121: Statik oluşturucular özel olmalıdır

Sistem, türünün ilk örneğinin oluşturulmasından önce statik oluşturucuyu çağırır veya herhangi bir statik üyeye başvurur.Statik oluşturucu özel değilse, sistem dışındaki kod tarafından çağrılabilir.Oluşturucu içinde gerçekleştirilen işlemlere bağlı olarak bu, beklenmeyen davranışlara neden olabilir.

CA2122: Bağlantı talepleri olan yöntemleri dolaylı olarak açığa çıkarmayın

Ortak veya korumalı bir üye, Bağlantı Taleplerine sahiptir ve herhangi bir güvenlik denetimi gerçekleştirmeyen üye tarafından çağrılır.Bağlantı talebi, yalnızca o anki çağırıcı izinlerini denetler.

CA2123: Geçersiz kılan bağlantı talepleri taban ile özdeş olmalıdır

Bu kural, arabirim ya da başka bir türdeki sanal yöntem olan temel yöntem ile başka bir yöntemi eşleştirir ve sonra her bir bağlantı talebini inceler.Bu kural ihlal edilirse kötü niyetli arayan, sadece güvensiz bir yöntem çağırarak bağlantı isteğini atlayabilir.

CA2124: Savunmasız sonunda yan tümcelerini dış deneme içine sarmalayın

Ortak veya korumalı bir yöntem try/finally bloğunu içerir.Finally bloğu, güvenlik durumunu sıfırlamak için görünür ve finally bloğuna dahil değildir.

CA2126: Tür bağlantı talepleri devralma taleplerini gerektirir

Ortak sonuçlandırılmamış bir tür bağlantı isteği ile korunmalıdır ve geçersiz kılınabilir bir yöntemi vardır.Ne tür ne de yöntem miras talebiyle korunmaktadır.

CA2136: Üyeler çakışan saydamlık ek açıklamalarına sahip olmamalıdır

Kritik kod, %100 saydam bir derlemede oluşamaz.Bu kural; tür, alan ve yöntem düzeylerinde herhangi SecurityCritical açıklamaları için %100 saydam derlemeleri inceler.

CA2147: Saydam türler güvenlik bildirimlerini kullanmamalıdır

Bu kural, %100 saydam veya saydam/kritik karma derlemelerdeki tüm yöntemleri ve türleri analiz eder ve onayların bildirimsel veya zorunlu kullanımlarını işaretler.

CA2140: Saydam kod güvenlik kritik nesnelerine başvurmamalıdır

SecurityTransparentAttribute ile işaretlenmiş yöntemler, SecurityCritical olarak işaretlenmiş genel olmayan üyeleri çağırır.Bu kural, saydam/kritik karma derlemedeki tüm yöntemler ve türleri inceler ve SecurityTreatAsSafe işaretlenmemiş ortak olmayan kritik saydam koddaki çağrıları işaretler.

CA2130: Güvenlik kritik sabitleri saydam olmalıdır

Saydamlık zorlaması, sabit değerler için zorlanmaz çünkü derleyiciler sabit değerleri satır içi hale getirir bu nedenle arama, çalışma zamanında gerekli değildir.Sabit alanlar saydam güvenlikli olmalıdır; böylece kodu gözden geçirenler saydam kodun sabitlere erişemediğini varsaymaz.

CA2131: Güvenlik kritik türleri tür eşdeğerliğine katılamaz

Bir tür, türün eşdeğerliğine ve bir tür kendisine ya da üyeye ya da türün alanına katılır; SecurityCriticalAttribute özniteliğiyle işaretlenmiştir.Bu kural, herhangi kritik türler veya kritik yöntemleri içeren türler veya tür eşdeğerliğine katılan alanlar tetiklendiğinde başlatılır.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 tlbimp'e güvenmek yerine el ile tür eşdeğerliği uyguladığında başlar ve derleyiciler tür eşdeğerliği yapar.

CA2132: Varsayılan oluşturucular en az taban tür varsayılan oluşturucular kadar kritik olmalıdır

SecurityCriticalAttribute koduna sahip türler ve üyeler Silverlight uygulama kodu tarafından kullanılamaz.Kritik güvenlik türleri ve üyeleri, yalnızca Silverlight sınıf kütüphanesi için .NET Framework'ündeki güvenilen kod tarafından kullanılabilir.Türetilmiş sınıftaki ortak veya korumalı oluşturma, onun temel sınıfından aynı düzeyde veya daha saydam olması gerektiğinden uygulama içindeki sınıf SecurityCritical olarak işaretlenmiş bir sınıftan türeyemez.

CA2133: Temsilciler tutarlı saydamlığı olan yöntemlere bağlanmalıdır

Bu uyarı, saydam veya SecuritySafeCriticalAttribute ile işaretlenmiş bir yöntem için SecurityCriticalAttribute ile işaretlenmiş temsilciyi bağlayan yöntemi tetikler.Uyarı, saydam veya kritik bir yöntem için kritik güvenli temsilciyi bağlayan yöntemi de tetikler.

CA2134: Yöntemler taban yöntemleri geçersiz kılarken tutarlı saydamlığı tutmalıdır

Bu kural, SecurityCriticalAttribute ile işaretlenmiş yöntem, saydam veya SecuritySafeCriticalAttribute ile işaretlenmiş yöntemi geçersiz kıldığında tetikler.Bu kural, saydam veya SecuritySafeCriticalAttribute ile işaretlenmiş yöntem SecurityCriticalAttribute ile işaretlenmiş yöntemi geçersiz kıldığında da tetikler.Bu kural, sanal bir yöntemi geçersiz kılarken veya bir arabirim uygulanırken uygulanır.

CA2135: Düzey 2 derlemeler LinkDemands içermemelidir

LinkDemands, düzey 2 güvenlik kural kümesinden kaldırılmıştır.Tam zamanlı (JIT) derleme zamanında güvenliği zorlayan LinkDemands kullanmak yerine; yöntemleri, türleri ve SecurityCriticalAttribute özniteliğine sahip alanları işaretleyin.

CA2136: Üyeler çakışan saydamlık ek açıklamalarına sahip olmamalıdır

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; SecurityCriticalAttribute özniteliğiyle işaretlenmiş bir sınıf, SecuritySafeCriticalAttribute özniteliğiyle işaretlenmiş bir yöntemi içeremez.

CA2137: Saydam yöntemler yalnızca doğrulanabilir IL içermelidir

Bir yöntem, doğrulanamayan kodu içerir veya başvuruya göre bir tür döndürür.Bu kural, doğrulanamayan MSIL'yi (Microsoft Ara Dili) yürütmek için güvenlik saydam kodu tarafından girişimleri tetikler.Ancak kural tam IL doğrulayıcısı içermez ve MSIL doğrulamasının çoğu ihlalini yakalamak için buluşsal yöntemler kullanır.

CA2138: Saydam yöntemler SuppressUnmanagedCodeSecurity özniteliğine sahip yöntemleri çağırmamalıdır

Saydam bir güvenlik yöntemi, SuppressUnmanagedCodeSecurityAttribute özniteliğiyle işaretlenmiş bir yöntemi çağırır.

CA2139: Saydam yöntemler HandleProcessCorruptingExceptions özniteliğini kullanamaz

Bu kural, saydam herhangi bir yöntemi ve HandleProcessCorruptedStateExceptionsAttribute özniteliği kullanarak işlem bozucu özel durumun yakalanması için deneme yapmayı tetikler.Özel durumu bozan bu işlem, AccessViolationException gibi özel durumların CLR 4.0 sürümü özel durum sınıflandırılmasıdır.HandleProcessCorruptedStateExceptionsAttribute özniteliği, sadece kritik güvenlik yöntemleri tarafından kullanılır ve saydam bir yöntem uygulanırsa yoksayılır.

CA2140: Saydam kod güvenlik kritik nesnelerine başvurmamalıdır

SecurityCriticalAttribute özniteliğiyle işaretlenmiş bir kod kritik güvenliktir.Saydam bir yöntem, kritik güvenlik öğesini kullanamaz.Saydam bir tür kritik güvenlik türünü kullanmayı denerse; TypeAccessException, MethodAccessException veya FieldAccessException ortaya çıkar.

CA2141:Transparent yöntemleri LinkDemands'i karşılamamalıdır

Saydam bir güvenlik yöntemi, bir derlemede AllowPartiallyTrustedCallersAttribute (APTCA) özniteliğiyle işaretlenmiş yöntemi çağırır veya saydam güvenlik yöntemi, tür ya da yöntem için LinkDemand karşılar.

CA2142: Saydam kod LinkDemands ile korunmamalıdır

Bu kural, bunlara erişen LinkDemands gerektiren saydam yöntemleri tetikler.Saydam güvenlik kodu, bir işlemin güvenlik doğrulaması için sorumlu olmamalıdır ve bu nedenle izin talep edilmemelidir.

CA2143: Saydam yöntemler güvenlik taleplerini kullanmamalıdır

Saydam güvenlik kodu, bir işlemin güvenlik doğrulaması için sorumlu olmamalıdır ve bu nedenle izin talep edilmemelidir.Saydam güvenlik kodu, güvenlik kararını vermek için tüm talepleri kullanmalıdır ve güvenli kritik kod, saydam koda tüm talepleri vermek için güvenmemelidir.

CA2144: Saydam kod derlemeleri bayt dizilerinden yüklememelidir

Saydam kod için güvenlik incelemesi kritik kod için güvenlik incelemesi kadar kapsamlı değildir, çünkü saydam kod güvenlik duyarlı eylemleri gerçekleştiremez.Bir bayt dizisinden yüklenen derlemeler saydam kodda fark edilmeyebilir ve o bayt dizisi denetlenmesi gereken kritik ya da daha da önemlisi güvenli kritik kod içerebilir.

CA2145: Saydam yöntemler SuppressUnmanagedCodeSecurityAttribute ile donatılmamalıdır

SuppressUnmanagedCodeSecurityAttribute özniteliği ile donatılmış yöntemler, çağıran herhangi bir yöntem yerleştirilen örtülü LinkDemand'a sahiptir.Bu LinkDemand, çağıran kodun kritik güvenlikli olmasını gerektirir.SecurityCriticalAttribute özniteliği ile SuppressUnmanagedCodeSecurity kullanan yöntemi işaretlemek, bu gereksinimi çağıran yöntem için daha belirgin yapar.

CA2146: Türler en az kendi taban türleri ve arabirimleri kadar kritik olmalıdır

Bu kural, kendi temel türü kadar kritik olmayan saydam güvenlik özniteliğine sahip bir tür türetildiğinde veya arabirim uygulandığında tetiklenir.Yalnızca kritik türler, kritik temel türlerden veya kritik arabirimleri uygulayanlardan türeyebilir ve sadece kritik ya da kritik güvenli türler, kritik güvenli temel türler veya kritik güvenli arabirim uygulamalarından türeyebilir.

CA2147: Saydam türler güvenlik bildirimlerini kullanmamalıdır

SecurityTransparentAttribute olarak işaretlenmiş kod, onay için yeterli izinlerin verilmiş olmasını garanti etmez.

CA2149: Saydam yöntemler yerel kod içine çağırmamalıdır

Bu kural, örneğin P/Invoke gibi yerel kod içinde doğrudan çağıran herhangi bir saydam yöntemi tetikler.Bu kural ihlalleri 2. seviye saydamlık modeli içindeki MethodAccessException öncülüğünde ve 1. seviye saydamlık modeli içindeki UnmanagedCode için talepte bulunur.

CA2151: Kritik türler içeren alanlar güvenlik açısından kritik olmalıdır

Kritik güvenlik türlerini kullanmak için türe başvuran kod güvenliği kritik veya güvenlik güvenli kritik olmalıdır.Dolaylı başvuru olsa bile bu doğrudur.Bu nedenle, bir güvenlik saydam veya güvenlik güvenli kritik alana erişmek mümkün olmayacaktır, çünkü saydam kod hala alana erişemeyecektir.

CA5122 P/Invoke bildirimleri güvenli kritik olmamalıdır

Güvenlik duyarlı işlem gerçekleştirildiğinde yöntemler SecuritySafeCritical olarak işaretlenir ancak saydam mod kullanılarak da güvenli olur.Saydam kod, P/Invoke aracılığıyla yerel kodu hiçbir zaman doğrudan çağırmayabilir.Bu nedenle, P/Invoke güvenlik güvenli kritik olarak işaretleme çağırmak için saydam kodu etkinleştirmez ve güvenlik çözümlemesi için yanıltıcıdır.