CA5367: Serialisera inte typer med pekarfält
Property | Värde |
---|---|
Regel-ID | CA5367 |
Title | Serialisera inte typer med pekarfält |
Kategori | Säkerhet |
Korrigeringen är icke-bakåtkompatibel | Icke-icke-bryta |
Aktiverad som standard i .NET 9 | 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;
}