Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| 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;
}