Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
| Özellik | Değer |
|---|---|
| Kural Kimliği | CA5367 |
| Başlık | İşaretçi alanlarıyla türleri serileştirmeyin |
| Kategori | Güvenlik |
| Düzeltme bozucu ya da bozmayan olabilir | Kesintisiz |
| .NET 10'da varsayılan olarak etkin | Hayır |
| Geçerli diller | C# ve Visual Basic |
Neden
İşaretçiler tür güvenli değildir, bu da işaret ettikleri belleğin doğruluğunu garanti edemeyeceğiniz anlamına gelir. Bu nedenle, işaretçi alanlarıyla türleri seri hale getirmek bir güvenlik riskidir çünkü bir saldırganın işaretçiyi denetlemesine izin verebilir.
Kural açıklaması
Bu kural, işaretçi alanı veya özelliği olan serileştirilebilir bir sınıf olup olmadığını denetler. Serileştirilemeyen üyeler, statik üyeler veya System.NonSerializedAttribute ile işaretlenmiş alanlar gibi bir işaretçi olabilir.
İhlalleri düzeltme
Serileştirilebilir bir sınıftaki üyeler için işaretçi türlerini kullanmayın veya işaretçi olan üyeleri seri hale getirmeyin.
Uyarıların ne zaman bastırılması gerekiyor?
İşaretçileri serileştirilebilir türlerde kullanma riskini almayın.
Sahte kod örnekleri
Ihlal
using System;
[Serializable()]
unsafe class TestClassA
{
private int* pointer;
}
1\. Çözüm
using System;
[Serializable()]
unsafe class TestClassA
{
private int i;
}
Çözüm 2
using System;
[Serializable()]
unsafe class TestClassA
{
private static int* pointer;
}