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;
}