CA5367: Nie serializuj typów z polami wskaźnika

Właściwości Wartość
Identyfikator reguły CA5367
Stanowisko Nie serializuj typów z polami wskaźnika
Kategoria Bezpieczeństwo
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Wskaźniki nie są bezpieczne, co oznacza, że nie można zagwarantować poprawności pamięci, w której wskazują. Tak więc serializacji typów z polami wskaźnika jest zagrożeniem bezpieczeństwa, ponieważ może to umożliwić osobie atakującej kontrolowanie wskaźnika.

Opis reguły

Ta reguła sprawdza, czy istnieje klasa z możliwością serializacji z polem wskaźnika lub właściwością. Elementy członkowskie, których nie można serializować, mogą być wskaźnikiem, takim jak statyczne elementy członkowskie lub pola oznaczone znakiem System.NonSerializedAttribute.

Jak naprawić naruszenia

Nie należy używać typów wskaźników dla składowych w klasie możliwej do serializacji lub nie serializować składowych, które są wskaźnikami.

Kiedy pomijać ostrzeżenia

Nie ryzykuj używania wskaźników w typach możliwych do serializacji.

Przykłady przykładów kodu przykładowego

Naruszenie

using System;

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

Rozwiązanie 1

using System;

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

Rozwiązanie 2

using System;

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