Novos analisadores de segurança
Novos analisadores de segurança foram introduzidos para evitar o vazamento acidental de dados do usuário através de certas propriedades. Esses analisadores impõem práticas recomendadas identificando propriedades que não possuem configurações explícitas de serialização, por exemplo:
- DesignerSerializationVisibilityAttribute
- DefaultValueAttribute
ShouldSerialize[propertyName]
Metodologia
Os analisadores produzem avisos como:
WFO1000: A propriedade 'property' não configura a serialização de código para seu conteúdo de propriedade.
Por padrão, cada analisador produz um erro, garantindo que os desenvolvedores estejam cientes de possíveis problemas de segurança e vazamento de dados no início do processo de desenvolvimento.
Essa alteração visa melhorar a segurança e a capacidade de manutenção dos aplicativos Windows Forms, aplicando práticas de serialização adequadas, reduzindo assim o risco de exposição acidental de dados.
Comportamento anterior
Anteriormente, as propriedades em Windows Forms e UserControl controles podiam ser serializadas pelo designer sem configuração explícita de seu comportamento de serialização. Isso pode resultar na inclusão de dados não intencionais no código gerado ou nos arquivos de recursos, criando um risco potencial de segurança. Esse comportamento era particularmente problemático em objetos de linha de negócios UserControl personalizados, onde era fácil ignorar a serialização de dados confidenciais que não deveriam ter sido expostos. Por exemplo, propriedades contendo informações confidenciais, como dados do usuário ou configurações internas, podem ser gravadas diretamente nos arquivos de .cs gerados pelo designer ou incorporadas em arquivos .resx.
Novo comportamento
A partir do .NET 9, os novos analisadores de segurança do Windows Forms impõem um controle mais rigoroso sobre a serialização de propriedades em controles e UserControl objetos. Por padrão, o analisador produz um erro se uma propriedade não tiver seu comportamento de serialização CodeDOM explicitamente definido. Esse comportamento garante que as propriedades não sejam serializadas inadvertidamente. Você pode ajustar as configurações .editorconfig para alterar a gravidade do analisador ou suprimir o erro.
Versão introduzida
.NET 9 RC 1
Tipo de mudança de rutura
Essa alteração pode afetar a compatibilidade da fonte.
Razão para a alteração
Esta alteração foi feita por duas razões principais:
Segurança aprimorada: ao forçar definições explícitas de serialização, o analisador reduz significativamente o risco de exposição não intencional de dados, particularmente em aplicativos LOB. Isso já aconteceu no passado, e é ainda mais necessário agora no contexto da remoção do serializador BinaryFormatter. Ao impedir que tanto quanto possível seja serializado por acidente, para começar, não haverá problemas de compatibilidade com versões anteriores ou segurança em torno da serialização binária em arquivos de recursos para tipos que não têm um conversor de tipo dedicado.
Clareza e manutenibilidade de código aprimoradas: esse recurso garante que o comportamento de serialização seja transparente e intencional, o que ajuda em revisões de código e manutenção futura.
Ação recomendada
Revise as propriedades sinalizadas pelo analisador e defina as configurações de serialização apropriadas conforme necessário.
Para uma correção rápida (não recomendada), adicione a seguinte entrada em um arquivo .editorconfig no nível da pasta da solução ou da pasta do projeto:
[*.cs] # WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method dotnet_diagnostic.WFO1000.severity = silent
APIs afetadas
- N/A