Dela via


CA5367: Serialisera inte typer med pekarfält

Egenskap Värde
Regel-ID CA5367
Title Serialisera inte typer med pekarfält
Kategori Säkerhet
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

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;
}