CA5367: Nie serializuj typów z polami wskaźnika
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA5367 |
Tytuł | Nie serializuj typów z polami wskaźnika |
Kategoria | Bezpieczeństwo |
Poprawka powodująca niezgodność lub niezgodność | Niezgodność |
Domyślnie włączone na platformie .NET 9 | Nie. |
Przyczyna
Wskaźniki nie są bezpieczne, co oznacza, że nie można zagwarantować poprawności pamięci, w której wskazują. Tak więc serializacji typów z polami wskaźnika jest zagrożeniem bezpieczeństwa, ponieważ może to umożliwić osobie atakującej kontrolowanie wskaźnika.
Opis reguły
Ta reguła sprawdza, czy istnieje klasa z możliwością serializacji z polem wskaźnika lub właściwością. Elementy członkowskie, których nie można serializować, mogą być wskaźnikiem, takim jak statyczne elementy członkowskie lub pola oznaczone znakiem System.NonSerializedAttribute.
Jak naprawić naruszenia
Nie należy używać typów wskaźników dla składowych w klasie możliwej do serializacji lub nie serializować składowych, które są wskaźnikami.
Kiedy pomijać ostrzeżenia
Nie ryzykuj używania wskaźników w typach możliwych do serializacji.
Przykłady przykładów kodu przykładowego
Naruszenie
using System;
[Serializable()]
unsafe class TestClassA
{
private int* pointer;
}
Rozwiązanie 1
using System;
[Serializable()]
unsafe class TestClassA
{
private int i;
}
Rozwiązanie 2
using System;
[Serializable()]
unsafe class TestClassA
{
private static int* pointer;
}