Freigeben über


Neue Sicherheitsanalysetools

Neue Sicherheitsanalysetools wurden eingeführt, um das versehentliche Offenlegen von Benutzerdaten durch bestimmte Eigenschaften zu verhindern. Diese Analysetools erzwingen bewährte Methoden, indem Eigenschaften identifiziert werden, für die explizite Serialisierungseinstellungen fehlen, z. B.:

Die Analysetools erzeugen Warnungen wie die folgende:

WFO1000: Die Eigenschaft „property“ konfiguriert die Codeserialisierung nicht für den Eigenschaftsinhalt.

Standardmäßig erzeugt jedes Analysetool einen Fehler, um sicherzustellen, dass Entwickler frühzeitig im Entwicklungsprozess auf potenzielle Probleme mit der Sicherheit und Datenlecks aufmerksam gemacht werden.

Diese Änderung zielt darauf ab, die Sicherheit und Wartung von Windows Forms-Apps zu verbessern, indem geeignete Serialisierungspraktiken erzwungen werden, wodurch das Risiko einer versehentlichen Offenlegung von Daten verringert wird.

Vorheriges Verhalten

Zuvor konnten Eigenschaften in Windows Forms und UserControl-Steuerelemente vom Designer ohne explizite Konfiguration des Serialisierungsverhaltens serialisiert werden. Dies konnte dazu führen, dass unbeabsichtigt Daten in den generierten Code oder in Ressourcendateien aufgenommen wurden, wodurch ein potenzielles Sicherheitsrisiko entstand. Dieses Verhalten war besonders problematisch bei benutzerdefinierten UserControl-Branchenobjekten, bei denen es leicht war, die Serialisierung vertraulicher Daten zu übersehen, die nicht verfügbar gemacht werden sollten. Beispielsweise konnten Eigenschaften, die vertrauliche Informationen enthalten (etwa Benutzerdaten oder interne Konfigurationen), direkt in die vom Designer generierten CS-Dateien geschrieben oder in RESX-Dateien eingebettet werden.

Neues Verhalten

Ab .NET 9 erzwingen die neuen Windows Forms-Sicherheitsanalysetools strengere Kontrolle über die Serialisierung von Eigenschaften in Steuerelementen und UserControl-Objekten. Das Analysetool erzeugt standardmäßig einen Fehler, wenn für eine Eigenschaft das CodeDOM-Serialisierungsverhalten nicht explizit definiert ist. Dieses Verhalten stellt sicher, dass Eigenschaften nicht versehentlich serialisiert werden. Sie können die Einstellungen für .editorconfig anpassen, um den Schweregrad des Analysetools zu ändern oder den Fehler zu unterdrücken.

Eingeführt in Version

.NET 9 RC 1

Typ des Breaking Changes

Diese Änderung kann sich auf die Quellkompatibilität auswirken.

Grund für die Änderung

Diese Änderung ist aus zwei Hauptgründen erfolgt:

  • Verbesserte Sicherheit: Durch das Erzwingen expliziter Serialisierungsdefinitionen reduziert das Analysetool das Risiko unbeabsichtigter Offenlegung von Daten, insbesondere in Branchenanwendungen. Dies ist in der Vergangenheit geschehen und ist jetzt im Zusammenhang mit der Entfernung des BinaryFormatter-Serialisierers umso notwendiger. Wenn Sie möglichst von vornherein die versehentliche Serialisierung verhindern, gibt es keine Abwärtskompatibilitäts- oder Sicherheitsprobleme bei der binären Serialisierung in Ressourcendateien für Typen ohne dedizierten Typkonverter.

  • Verbesserte Übersichtlichkeit und Verwaltbarkeit von Code: Mit diesem Feature wird sichergestellt, dass das Serialisierungsverhalten transparent und absichtlich ist, was Sie bei Codeüberprüfungen und zukünftiger Wartung unterstützt.

  • Überprüfen Sie die vom Analysetool gekennzeichneten Eigenschaften, und konfigurieren Sie bei Bedarf geeignete Serialisierungseinstellungen.

  • Fügen Sie für eine kurzfristige Lösung (nicht empfohlen) den folgenden Eintrag in einer EDITORCONFIG-Datei auf Projektmappenordner- oder Projektordnerebene hinzu:

    [*.cs]
    
    # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method
    dotnet_diagnostic.WFO1000.severity = silent
    

Betroffene APIs