Nowe analizatory zabezpieczeń
Wprowadzono nowe analizatory zabezpieczeń, aby zapobiec przypadkowemu wyciekowi danych użytkownika za pośrednictwem niektórych właściwości. Te analizatory wymuszają najlepsze rozwiązania, identyfikując właściwości, które nie mają jawnych ustawień serializacji, na przykład:
- DesignerSerializationVisibilityAttribute
- DefaultValueAttribute
- Metody
ShouldSerialize[propertyName]
Analizatory generują ostrzeżenia, takie jak:
WFO1000: Właściwość "property" nie konfiguruje serializacji kodu dla jej zawartości właściwości.
Domyślnie każdy analizator generuje błąd, zapewniając, że deweloperzy są świadomi potencjalnych problemów z zabezpieczeniami i wyciekami danych na wczesnym etapie procesu programowania.
Ta zmiana ma na celu zwiększenie bezpieczeństwa i możliwości utrzymania aplikacji Windows Forms poprzez wymuszanie odpowiednich praktyk serializacji, co zmniejsza ryzyko przypadkowego ujawnienia danych.
Poprzednie zachowanie
Wcześniej właściwości formularzy systemu Windows i UserControl kontrolek mogły być serializowane przez projektanta bez wyraźnej konfiguracji ich zachowania serializacji. Może to spowodować, że niezamierzone dane są uwzględniane w wygenerowanym kodzie lub plikach zasobów, tworząc potencjalne zagrożenie bezpieczeństwa. Takie zachowanie było szczególnie problematyczne w niestandardowych obiektach biznesowych UserControl , w których łatwo było przeoczyć serializacji poufnych danych, które nie powinny zostać ujawnione. Na przykład właściwości zawierające poufne informacje, takie jak dane użytkownika lub konfiguracje wewnętrzne, mogą być zapisywane bezpośrednio w plikach .cs generowanych przez projektanta lub osadzonych w plikach resx.
Nowe zachowanie
Począwszy od platformy .NET 9, nowe analizatory zabezpieczeń windows Forms wymuszają ściślejszą kontrolę nad serializacji właściwości w kontrolkach i UserControl obiektach. Domyślnie analizator generuje błąd, jeśli właściwość nie ma jawnie zdefiniowanego zachowania serializacji CodeDOM. To zachowanie zapewnia, że właściwości nie są przypadkowo serializowane. Możesz dostosować ustawienia pliku editorconfig, aby zmienić ważność analizatora lub pominąć błąd.
Wprowadzona wersja
.NET 9 RC 1
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność źródła.
Przyczyna wprowadzenia zmiany
Ta zmiana została wprowadzona z dwóch podstawowych powodów:
Zwiększone zabezpieczenia: Wymuszając jawne definicje serializacji, analizator znacznie zmniejsza ryzyko przypadkowego ujawnienia danych, szczególnie w aplikacjach BIZNESOWYCH. Stało się to w przeszłości i tym bardziej konieczne jest teraz w kontekście usuwania serializatora BinaryFormatter. Uniemożliwiając jak najwięcej serializacji przez przypadek, nie będzie zgodność z poprzednimi wersjami ani problemy z zabezpieczeniami dotyczące serializacji binarnej w plikach zasobów dla typów, które nie mają dedykowanego konwertera typów.
Ulepszona przejrzystość kodu i łatwość konserwacji: ta funkcja zapewnia, że zachowanie serializacji jest przezroczyste i zamierzone, co ułatwia przeglądy kodu i przyszłą konserwację.
Zalecana akcja
Przejrzyj właściwości oflagowane przez analizator i skonfiguruj odpowiednie ustawienia serializacji zgodnie z potrzebami.
Aby uzyskać szybką poprawkę (niezalecane), dodaj następujący wpis w pliku editorconfig na poziomie folderu rozwiązania lub folderu projektu:
[*.cs] # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method dotnet_diagnostic.WFO1000.severity = silent
Dotyczy interfejsów API
- Nie dotyczy