Nouveaux analyseurs de sécurité
De nouveaux analyseurs de sécurité ont été introduits pour empêcher la fuite accidentelle de données utilisateur via certaines propriétés. Ces analyseurs appliquent les meilleures pratiques en identifiant les propriétés auxquelles font défaut des paramètres de sérialisation explicites, par exemple :
- DesignerSerializationVisibilityAttribute
- DefaultValueAttribute
- Méthodes
ShouldSerialize[propertyName]
Les analyseurs génèrent des avertissements tels que :
WFO1000 : la propriété 'property' ne configure pas la sérialisation du code pour son contenu de propriété.
Par défaut, chaque analyseur génère une erreur, ce qui garantit que les développeurs sont informés des possibles problèmes de sécurité et de fuite de données au début du processus de développement.
Ce changement vise à améliorer la sécurité et la maintenance des applications Windows Forms en appliquant des pratiques de sérialisation appropriées, réduisant ainsi le risque d’exposition accidentelle des données.
Comportement précédent
Auparavant, les propriétés dans Windows Forms et les contrôles UserControl pouvaient être sérialisés par le concepteur sans configuration explicite de leur comportement de sérialisation. Cela peut entraîner l’inclusion de données non souhaitées dans le code ou les fichiers de ressources générés, ce qui crée un risque de sécurité potentiel. Ce comportement était particulièrement problématique dans les objets métier UserControl personnalisés, où il était facile d’ignorer la sérialisation des données sensibles qui n’auraient pas dû être exposées. Par exemple, les propriétés contenant des informations sensibles, telles que les données utilisateur ou les configurations internes, peuvent être écrites directement dans les fichiers .cs générés par le concepteur ou incorporés dans les fichiers .resx.
Nouveau comportement
À compter de .NET 9, les nouveaux analyseurs de sécurité Windows Forms appliquent un contrôle plus strict sur la sérialisation des propriétés dans les contrôles et les objets UserControl. Par défaut, l’analyseur génère une erreur si le comportement de sérialisation CodeDOM d'une propriété n'est pas explicitement défini. Ce comportement garantit que les propriétés ne sont pas sérialisées par inadvertance. Vous pouvez ajuster les paramètres .editorconfig pour modifier la gravité de l’analyseur ou supprimer l’erreur.
Version introduite
.NET 9 RC 1
Type de changement cassant
Ce changement peut affecter la compatibilité source.
Raison du changement
Ce changement a été effectué pour deux raisons principales :
Sécurité renforcée : en forçant des définitions de sérialisation explicites, l’analyseur réduit considérablement le risque d’exposition involontaire des données, en particulier dans les applications métier. Cela s’est produit par le passé, et ce renforcement de la sécurité est d'autant plus nécessaire aujourd'hui avec la suppression du sérialiseur BinaryFormatter . En empêchant autant que possible la sérialisation accidentelle, il n’y aura pas de compatibilité descendante ou de sécurité autour de la sérialisation binaire dans les fichiers de ressources pour les types qui n’ont pas de convertisseur de type dédié.
Amélioration de la clarté et de la maintenance du code : cette fonctionnalité garantit que le comportement de sérialisation est transparent et intentionnel, ce qui facilite les révisions de code et la maintenance future.
Action recommandée
Passez en revue les propriétés marquées par l’analyseur et configurez les paramètres de sérialisation appropriés si nécessaire.
Pour obtenir un correctif rapide (non recommandé), ajoutez l’entrée suivante dans un fichier editorconfig au niveau du dossier de solution ou du dossier du projet :
[*.cs] # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method dotnet_diagnostic.WFO1000.severity = silent
API affectées
- N/A