CA5367: Ne serializovat typy s poli ukazatele

Vlastnost Hodnota
ID pravidla CA5367
Název Ne serializovat typy s poli ukazatele
Kategorie Zabezpečení
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 No

Příčina

Ukazatele nejsou typu bezpečné, což znamená, že nemůžete zaručit správnost paměti, na kterou odkazují. Serializace typů s poli ukazatele je tedy bezpečnostní riziko, protože může útočníkovi umožnit řídit ukazatel.

Popis pravidla

Toto pravidlo zkontroluje, zda existuje serializovatelná třída s polem ukazatele nebo vlastností. Členy, které nelze serializovat, mohou být ukazatel, například statické členy nebo pole označená System.NonSerializedAttribute.

Jak opravit porušení

Nepoužívejte typy ukazatelů pro členy v serializovatelné třídě nebo ne serializovat členy, které jsou ukazatele.

Kdy potlačit upozornění

Nepoužívejte riziko použití ukazatelů v serializovatelných typech.

Příklady pseudokódu

Porušení

using System;

[Serializable()]
unsafe class TestClassA
{
    private int* pointer;
}

Řešení 1

using System;

[Serializable()]
unsafe class TestClassA
{
    private int i;
}

Řešení 2

using System;

[Serializable()]
unsafe class TestClassA
{
    private static int* pointer;
}