Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Propriedade | valor |
|---|---|
| ID da regra | CA5367 |
| Título | Não serializar tipos com campos de ponteiro |
| Categoria | Segurança |
| A correção causa interrupção ou não | Ininterrupto |
| Habilitado por padrão no .NET 10 | Não |
| Línguas aplicáveis | C# e Visual Basic |
Motivo
Os ponteiros não são seguros em termos de tipo, o que significa que não se pode garantir a correta identificação da memória para a qual 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 de ponteiro ou propriedade. 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 ou não serialize os membros que são ponteiros.
Quando suprimir avisos
Não arrisque 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;
}