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