Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| 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 10 | 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;
}