Nuevos analizadores de seguridad
Se han introducido nuevos analizadores de seguridad para evitar la pérdida accidental de datos de usuario a través de determinadas propiedades. Estos analizadores aplican procedimientos recomendados mediante la identificación de propiedades que carecen de la configuración de serialización explícita, por ejemplo:
- DesignerSerializationVisibilityAttribute
- DefaultValueAttribute
- Métodos de
ShouldSerialize[propertyName]
Los analizadores generan advertencias como:
WFO1000: la propiedad 'property' no configura la serialización de código para su contenido de propiedad.
De forma predeterminada, cada analizador produce un error, lo que garantiza que los desarrolladores sean conscientes de posibles problemas de seguridad y pérdida de datos al principio del proceso de desarrollo.
Este cambio tiene como objetivo mejorar la seguridad y el mantenimiento de las aplicaciones de Windows Forms aplicando prácticas de serialización adecuadas, lo que reduce el riesgo de exposición accidental de datos.
Comportamiento anterior
Antes, el diseñador podía serializar las propiedades de Windows Forms y controles UserControl sin una configuración explícita de su comportamiento de serialización. Esto podía dar lugar a que los datos no deseados se incluyeran en el código o los archivos de recursos generados, creando un riesgo de seguridad potencial. Este comportamiento era especialmente problemático en objetos UserControl de línea de negocio personalizados, donde era fácil pasar por alto la serialización de datos confidenciales que no deberían haberse expuesto. Por ejemplo, las propiedades que contienen información confidencial, como datos de usuario o configuraciones internas, se podían escribir directamente en los archivos .cs generados por el diseñador o incrustados en archivos .resx.
Comportamiento nuevo
A partir de .NET 9, los nuevos analizadores de seguridad de Windows Forms aplican un control más estricto sobre la serialización de propiedades en controles y objetos UserControl. De forma predeterminada, el analizador genera un error si una propiedad no tiene definido explícitamente su comportamiento de serialización CodeDOM. Este comportamiento garantiza que las propiedades no se serialicen accidentalmente. Puede ajustar la configuración de .editorconfig para cambiar la gravedad del analizador o suprimir el error.
Versión introducida
.NET 9 RC 1
Tipo de cambio importante
Este cambio puede afectar a la compatibilidad de orígenes.
Motivo del cambio
Este cambio se ha realizado por dos motivos principales:
Seguridad mejorada: al forzar definiciones de serialización explícitas, el analizador reduce significativamente el riesgo de exposición involuntaria de datos, especialmente en las aplicaciones de LOB. Esto ha sucedido en el pasado, y es aún más necesario ahora en el contexto de la eliminación del serializador BinaryFormatter. Al evitar en lo posible que se serialice por accidente, no habrá problemas de compatibilidad con versiones anteriores ni de seguridad en torno a la serialización binaria en archivos de recursos para tipos que no tienen un conversor de tipos dedicado.
Mejora de la claridad y el mantenimiento del código: esta característica garantiza que el comportamiento de serialización sea transparente e intencionado, lo que ayuda en las revisiones de código y el mantenimiento futuro.
Acción recomendada
Revise las propiedades marcadas por el analizador y configure las opciones de serialización adecuadas según sea necesario.
Para una corrección rápida (no recomendada), agregue la siguiente entrada en un archivo .editorconfig en el nivel de carpeta de la solución o carpeta del proyecto:
[*.cs] # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method dotnet_diagnostic.WFO1000.severity = silent
API afectadas
- N/D