CA2111: Wskaźniki nie powinny być widoczne
Pozycja | Wartość |
---|---|
Ruleid | CA2111 |
Kategoria | Microsoft.Security |
Zmiana powodująca niezgodność | Kluczowa |
Przyczyna
Publiczny lub chroniony System.IntPtr albo System.UIntPtr pole nie jest tylko do odczytu.
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
IntPtr i UIntPtr są typami wskaźników, które są używane do uzyskiwania dostępu do niezarządzanej pamięci. Jeśli wskaźnik nie jest prywatny, wewnętrzny lub tylko do odczytu, złośliwy kod może zmienić wartość wskaźnika, potencjalnie zezwalając na dostęp do dowolnych lokalizacji w pamięci lub powodując awarie aplikacji lub systemu.
Jeśli zamierzasz zabezpieczyć dostęp do typu zawierającego pole wskaźnika, zobacz CA2112: Typy zabezpieczone nie powinny uwidaczniać pól.
Jak naprawić naruszenia
Zabezpiecz wskaźnik, tworząc go tylko do odczytu, wewnętrzny lub prywatny.
Kiedy pomijać ostrzeżenia
Pomiń ostrzeżenie z tej reguły, jeśli nie korzystasz z wartości wskaźnika.
Przykład
Poniższy kod przedstawia wskaźniki naruszające i spełniające regułę. Zwróć uwagę, że wskaźniki inne niż prywatne naruszają również regułę CA1051: Nie deklaruj widocznych pól wystąpienia.
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;
}
}
Powiązane reguły
CA2112: Typy zabezpieczone nie powinny ujawniać pól
CA1051: Nie deklaruj widocznych pól wystąpienia
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla