Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
| 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;
}