CA5367: Typen niet serialiseren met aanwijzervelden

Eigenschap Waarde
Regel-id CA5367
Titel Typen met aanwijzervelden niet serialiseren
Categorie Beveiliging
Fix kan brekend of niet-brekend zijn Niet-brekend
Standaard ingeschakeld in .NET 10 Nee
Toepasselijke talen C# en Visual Basic

Oorzaak

Aanwijzers zijn niet veilig, wat betekent dat u de juistheid van het geheugen waarop ze wijzen niet kunt garanderen. Het serialiseren van typen met aanwijzervelden is dus een beveiligingsrisico, omdat een aanvaller hierdoor de aanwijzer kan beheren.

Beschrijving van regel

Met deze regel wordt gecontroleerd of er een serialiseerbare klasse is met een aanwijzerveld of eigenschap. Leden die niet kunnen worden geserialiseerd, kunnen een aanwijzer zijn, zoals statische leden of velden die zijn gemarkeerd met System.NonSerializedAttribute.

Hoe schendingen op te lossen

Gebruik geen aanwijzertypen voor leden in een serialiseerbare klasse en serialiseer de leden die aanwijzers zijn niet.

Wanneer waarschuwingen onderdrukken

Neem niet het risico om pointers te gebruiken in serialiseerbare typen.

Voorbeelden van pseudocode

Schending

using System;

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

Oplossing 1

using System;

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

Oplossing 2

using System;

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