Nové analyzátory zabezpečení
Byly zavedeny nové analyzátory zabezpečení, aby se zabránilo náhodnému úniku uživatelských dat prostřednictvím určitých vlastností. Tyto analyzátory vynucují osvědčené postupy identifikací vlastností, které nemají explicitní nastavení serializace, například:
- DesignerSerializationVisibilityAttribute
- DefaultValueAttribute
- Metody
ShouldSerialize[propertyName]
Analyzátory generují upozornění, například:
WFO1000: Vlastnost 'property' nekonfiguruje serializaci kódu pro jeho obsah vlastnosti.
Ve výchozím nastavení každý analyzátor vytvoří chybu, aby vývojáři věděli o potenciálních problémech se zabezpečením a únikem dat v rané fázi procesu vývoje.
Cílem této změny je zvýšit zabezpečení a udržovatelnost aplikací model Windows Forms vynucením správných postupů serializace, čímž se snižuje riziko náhodného vystavení dat.
Předchozí chování
Dříve můžou být vlastnosti v model Windows Forms a UserControl ovládacích prvcích serializovány návrhářem bez explicitní konfigurace jejich chování serializace. To může mít za následek zahrnutí nezamýšlených dat do vygenerovaných kódů nebo souborů prostředků, což by mohlo způsobit potenciální bezpečnostní riziko. Toto chování bylo obzvláště problematické u vlastních obchodních UserControl objektů, kde bylo snadné přehlédnout serializaci citlivých dat, která by neměla být vystavena. Například vlastnosti obsahující citlivé informace, jako jsou uživatelská data nebo interní konfigurace, mohou být zapsány přímo do souborů vygenerovaných návrhářem .cs nebo vložené do souborů .resx .
Nové chování
Počínaje rozhraním .NET 9 vynucují nové analyzátory zabezpečení model Windows Forms přísnější kontrolu nad serializací vlastností v ovládacích prvcích a UserControl objektech. Analyzátor ve výchozím nastavení vytvoří chybu, pokud vlastnost nemá explicitně definované chování serializace CodeDOM. Toto chování zajišťuje, že vlastnosti nejsou neúmyslně serializovány. Nastavením .editorconfig můžete změnit závažnost analyzátoru nebo potlačit chybu.
Zavedená verze
.NET 9 RC 1
Typ zásadní změny
Tato změna může mít vliv na kompatibilitu zdroje.
Důvod změny
Tato změna byla provedena ze dvou hlavních důvodů:
Vylepšené zabezpečení: Vynucením explicitních definic serializace analyzátor výrazně snižuje riziko neúmyslného vystavení dat, zejména v obchodních aplikacích. To se stalo v minulosti, a to je vše ještě důležitější nyní v kontextu BinaryFormatter serializátoru odebrání. Díky tomu, že nebude možné serializovat co nejvíce náhodou, nebude existovat zpětná kompatibilita ani problémy zabezpečení týkající se binární serializace v souborech prostředků pro typy, které nemají vyhrazený převaděč typů.
Vylepšená srozumitelnost a udržovatelnost kódu: Tato funkce zajišťuje, že chování serializace je transparentní a úmyslné, což pomáhá při kontrolách kódu a budoucí údržbě.
Doporučená akce
Zkontrolujte vlastnosti označené analyzátorem a podle potřeby nakonfigurujte odpovídající nastavení serializace.
Pro rychlou opravu (nedoporučuje se) přidejte následující položku do souboru .editorconfig na úrovni složky řešení nebo složky projektu:
[*.cs] # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method dotnet_diagnostic.WFO1000.severity = silent
Ovlivněná rozhraní API
- –