CA5367: Non serializzare i tipi con campi puntatore
Proprietà | valore |
---|---|
ID regola | CA5367 |
Title | Non serializzare i tipi con i campi puntatore |
Categoria | Sicurezza |
La correzione causa un'interruzione o meno | Non causa un'interruzione |
Abilitato per impostazione predefinita in .NET 9 | 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;
}