Share via


CA5367: Serialisera inte typer med pekarfält

Property Värde
Regel-ID CA5367
Rubrik Serialisera inte typer med pekarfält
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

Pekare är inte typsäkra, vilket innebär att du inte kan garantera att minnet de pekar på är korrekt. Därför är serialiseringstyper med pekarfält en säkerhetsrisk, eftersom det kan göra det möjligt för en angripare att kontrollera pekaren.

Regelbeskrivning

Den här regeln kontrollerar om det finns en serialiserbar klass med ett pekarfält eller en egenskap. Medlemmar som inte kan serialiseras kan vara en pekare, till exempel statiska medlemmar eller fält markerade med System.NonSerializedAttribute.

Så här åtgärdar du överträdelser

Använd inte pekartyper för medlemmar i en serialiserbar klass eller serialisera inte de medlemmar som är pekare.

När du ska ignorera varningar

Ta inte risken att använda pekare i serialiserbara typer.

Exempel på pseudokod

Kränkning

using System;

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

Lösning 1

using System;

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

Lösning 2

using System;

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