CA5367: İşaretçi alanlarıyla türleri serileştirmeyin
Özellik | Değer |
---|---|
Kural Kimliği | CA5367 |
Başlık | İşaretçi alanlarıyla türleri serileştirmeyin |
Kategori | Güvenlik |
Hataya neden olan veya bozulmayan düzeltme | Hataya neden olmayan |
.NET 9'da varsayılan olarak etkin | Hayır |
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ştirilemedi üyeler, statik üyeler veya ile System.NonSerializedAttributeiş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;
}