Compartilhar via


CA5367: não serialize tipos com campos de ponteiro

Property 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 Sem interrupção
Habilitado por padrão no .NET 8 Não

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 uma propriedade ou um campo 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 nem serialize 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;
}