CA5367: Typen niet serialiseren met aanwijzervelden
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA5367 |
Titel | Typen met aanwijzervelden niet serialiseren |
Categorie | Beveiliging |
Oplossing is brekend of niet-brekend | Niet-brekend |
Standaard ingeschakeld in .NET 9 | Nee |
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.
Schendingen oplossen
Gebruik geen aanwijzertypen voor leden in een serialiseerbare klasse of 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;
}