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 |
---|---|
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. |
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. |
|
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. |
|
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. |
|
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. |
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. |
|
İş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. |
|
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. |
|
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. |
|
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. |
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. |
|
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. |
|
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. |
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. |
|
---|---|
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. |
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. |
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. |
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. |
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. |