CA5367: Non serializzare i tipi con campi puntatore

Proprietà valore
ID regola CA5367
Titolo Non serializzare i tipi con i campi puntatore
Categoria Sicurezza
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 No

Causa

I puntatori non sono sicuri per i tipi, il che significa che non è possibile garantire la correttezza della memoria a cui puntano. Pertanto, la serializzazione dei tipi con campi puntatore è un rischio per la sicurezza, in quanto può consentire a un utente malintenzionato di controllare il puntatore.

Descrizione regola

Questa regola controlla se è presente una classe serializzabile con un campo o una proprietà puntatore. I membri che non possono essere serializzati possono essere un puntatore, ad esempio membri statici o campi contrassegnati con System.NonSerializedAttribute.

Come correggere le violazioni

Non usare tipi di puntatore per i membri di una classe serializzabile o non serializzare i membri che sono puntatori.

Quando eliminare gli avvisi

Non rischiare di usare i puntatori nei tipi serializzabili.

Esempi di pseudo-codice

Violazione

using System;

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

Soluzione 1

using System;

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

Soluzione 2

using System;

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