Comparteix a través de


CA5367: No serialice tipos que tengan campos de puntero

Propiedad Valor
Identificador de la regla CA5367
Título No serializar los tipos con campos de puntero
Categoría Seguridad
El arreglo es problemático o no problemático Sin interrupción
Habilitado de forma predeterminada en .NET 10 No
Idiomas aplicables C# y Visual Basic

Causa

Los punteros no son seguros tipográficamente, lo cual significa que no se puede garantizar con certeza la correctitud de la memoria a la que apuntan. Por lo tanto, la serialización de tipos con campos de puntero es un riesgo para la seguridad, ya que puede permitir que un atacante controle el puntero.

Descripción de la regla

Esta regla comprueba si hay una clase serializable con un campo o una propiedad de puntero. Los miembros que no se pueden serializar pueden ser punteros, como los miembros estáticos o los campos marcados con System.NonSerializedAttribute.

Cómo corregir infracciones

No use tipos de puntero para miembros en una clase serializable o no serialice los miembros que son punteros.

Cuándo suprimir las advertencias

No corra el riesgo de usar punteros en tipos serializables.

Ejemplos de pseudocódigo

Infracción

using System;

[Serializable()]
unsafe class TestClassA
{
    private int* pointer;
}

Solución 1

using System;

[Serializable()]
unsafe class TestClassA
{
    private int i;
}

Solución 2

using System;

[Serializable()]
unsafe class TestClassA
{
    private static int* pointer;
}