次の方法で共有


新しいセキュリティ アナライザー

特定のプロパティを介してユーザー データが誤って漏洩するのを防ぐ新しいセキュリティ アナライザーが導入されました。 これらのアナライザーは、明示的なシリアル化の設定が欠如しているプロパティを特定することで、次のようなベスト プラクティスを適用します。

アナライザーは、次のような警告を生成します。

WFO1000: プロパティ "property" は、プロパティ コンテンツのコード シリアル化を構成しません。

既定では、各アナライザーでエラーを発生させて、開発プロセスの早い段階で潜在的なセキュリティとデータ漏洩の問題を開発者に知らせるようにしています。

この変更は、適切なシリアル化のプラクティスを適用して、Windows フォーム アプリのセキュリティと保守容易性を強化し、それによって誤ったデータ露出のリスクを軽減することが目的です。

以前の動作

以前は、Windows フォーム コントロールと UserControl コントロールのプロパティは、シリアル化の動作の明確な構成がなくても、デザイナーがシリアル化できていました。 これによって、生成されたコードまたはリソース ファイルに意図しないデータが含まれ、潜在的なセキュリティ リスクが生じる可能性がありました。 この動作は、公開されるべきではなかった機密データのシリアル化を見落としやすかったため、カスタムの基幹業務 UserControl オブジェクトでは特に問題になりました。 たとえば、ユーザー データや内部構成などの機密情報を含むプロパティは、デザイナーが生成した .cs ファイルに直接書き込まれたり、.resx ファイル内に埋め込まれたりする可能性がありました。

新しい動作

.NET 9 以降、新しい Windows フォーム セキュリティ アナライザーでは、コントロールと UserControl オブジェクトのプロパティのシリアル化に対して、より厳密な制御を適用します。 既定では、プロパティに CodeDOM シリアル化の動作が明示的に定義されていない場合、アナライザーはエラーを生成します。 この動作により、プロパティが誤ってシリアル化されないようにします。 .editorconfig の設定を調整すると、アナライザーの重大度を変更したり、エラーを抑制したりできます。

導入されたバージョン

.NET 9 RC 1

破壊的変更の種類

この変更はソースの互換性に影響を与える可能性があります。

変更理由

この変更は、次の 2 つの主な理由で行われました。

  • セキュリティの強化: シリアル化の定義を明示的に強制することにより、アナライザーは意図しないデータ露出のリスクを大幅に低減します。特に LOB アプリケーションにおいて顕著です。 これは過去に発生したことがあり、BinaryFormatter シリアライザーの削除が行われている現状では、なおさら必要です。 最初から誤ってシリアル化されることをできるだけ防ぐことで、専用の型コンバーターを持たない型のリソース ファイルにおいてバイナリ シリアル化に関わる下位互換性やセキュリティの問題は発生しなくなります。

  • コードのわかりやすさと保守容易性の向上: この機能により、シリアル化の行動がわかりやすく意図的であることが保証され、それがコード レビューや将来のメンテナンスに役立ちます。

  • アナライザーによってフラグが設定されたプロパティを確認し、必要に応じて適切なシリアル化の設定を構成します。

  • クイック修正 (お勧めしません) の場合、ソリューション フォルダーまたはプロジェクト フォルダーのレベルにある .editorconfig ファイルに次のエントリを追加します。

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

影響を受ける API

  • 該当なし