CA2111: I puntatori non devono essere visibili
Articolo | Valore |
---|---|
ID regola | CA2111 |
Category | Microsoft.Security |
Modifica | Interruzione |
Causa
Un campo pubblico o System.UIntPtr protetto System.IntPtr non è di sola lettura.
Nota
Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.
Descrizione regola
IntPtr e UIntPtr sono tipi di puntatore usati per accedere alla memoria non gestita. Se un puntatore non è privato, interno o di sola lettura, il codice dannoso può modificare il valore del puntatore, consentendo potenzialmente l'accesso a posizioni arbitrarie in memoria o causando errori dell'applicazione o del sistema.
Se si intende proteggere l'accesso al tipo che contiene il campo del puntatore, vedere CA2112: I tipi protetti non devono esporre campi.
Come correggere le violazioni
Proteggere il puntatore rendendolo di sola lettura, interno o privato.
Quando eliminare gli avvisi
Eliminare un avviso da questa regola se non si fa affidamento sul valore del puntatore.
Esempio
Il codice seguente mostra i puntatori che violano e soddisfano la regola. Si noti che anche i puntatori non privati violano la regola CA1051: Non dichiarare campi di istanza visibili.
using System;
namespace SecurityRulesLibrary
{
public class ExposedPointers
{
// Violates rule: PointersShouldNotBeVisible.
public IntPtr publicPointer1;
public UIntPtr publicPointer2;
protected IntPtr protectedPointer;
// Satisfies the rule.
internal UIntPtr internalPointer;
private UIntPtr privatePointer;
public readonly UIntPtr publicReadOnlyPointer;
protected readonly IntPtr protectedReadOnlyPointer;
}
}
Regole correlate
CA2112: I tipi protetti non devono esporre campi
CA1051: Non dichiarare campi di istanza visibili
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per