CA5367: Neserializujte typy s ukazatelovými poli

Vlastnost Hodnota
ID pravidla CA5367
Název Neserializujte typy s ukazatelovými poli
Kategorie Zabezpečení
Oprava, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Ne
Příslušné jazyky C# a Visual Basic

Příčina

Ukazatele nejsou typově bezpečné, což znamená, že nemůžete zaručit správnost paměti, na kterou ukazují. 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 ukazateli, jako například statické členy nebo pole označená System.NonSerializedAttribute.

Jak opravit porušení

Nepoužívejte ukazatelové typy pro členy v serializovatelné třídě a neserializujte členy, které jsou ukazatele.

Kdy potlačit upozornění

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