Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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 10 | 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;
}