Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Propriedade | Valor |
|---|---|
| ID da regra | CA5367 |
| Título | Não serialize tipos com campos de ponteiro |
| Categoria | Segurança |
| Correção interruptiva ou sem interrupção | Inquebrável |
| Habilitado por padrão no .NET 10 | Não |
| Idiomas aplicáveis | C# e Visual Basic |
Causa
Ponteiros não são tipos seguros, o que significa que não é possível garantir a correção da memória para a qual eles apontam. Portanto, serializar tipos com campos de ponteiro é um risco de segurança, pois pode permitir que um invasor controle o ponteiro.
Descrição da regra
Esta regra verifica se há uma classe serializável com um campo ou uma propriedade de ponteiro. Os membros que não podem ser serializados podem ser um ponteiro, como membros estáticos ou campos marcados com System.NonSerializedAttribute.
Como corrigir violações
Não use tipos de ponteiro para membros em uma classe serializável e evite serializar os membros que são ponteiros.
Quando suprimir avisos
Não se arrisque a usar ponteiros em tipos serializáveis.
Exemplos de pseudocódigo
Violação
using System;
[Serializable()]
unsafe class TestClassA
{
private int* pointer;
}
Solução 1
using System;
[Serializable()]
unsafe class TestClassA
{
private int i;
}
Solução 2
using System;
[Serializable()]
unsafe class TestClassA
{
private static int* pointer;
}