Compartilhar via


Novos analisadores de segurança

Novos analisadores de segurança foram introduzidos para evitar o vazamento acidental de dados do usuário por meio de determinadas propriedades. Esses analisadores aplicam práticas recomendadas identificando propriedades que não têm configurações de serialização explícitas, por exemplo:

Os analisadores produzem avisos como:

WFO1000: a propriedade 'property' não configura a serialização de código para o conteúdo da propriedade.

Por padrão, cada analisador produz um erro, garantindo que os desenvolvedores estejam cientes dos possíveis problemas de segurança e vazamento de dados no início do processo de desenvolvimento.

Essa alteração visa aumentar a segurança e a capacidade de manutenção dos aplicativos Windows Forms, impondo práticas adequadas de serialização e reduzindo, assim, o risco da exposição acidental de dados.

Comportamento anterior

Anteriormente, as propriedades no Windows Forms e UserControl nos controles podiam ser serializadas pelo designer sem a configuração explícita do 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 possível risco 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, as propriedades que contêm informações confidenciais, como dados do usuário ou configurações internas, podem ser gravadas diretamente nos arquivos .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 o comportamento de serialização do CodeDOM explicitamente definido. Esse comportamento garante que as propriedades não sejam serializadas por engano. 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 alteração interruptiva

Essa alteração pode afetar a compatibilidade da origem.

Motivo da alteração

Essa alteração foi feita por dois motivos principais:

  • Segurança aprimorada: ao forçar definições explícitas de serialização, o analisador reduz consideravelmente o risco de exposição involuntária de dados, especialmente em aplicativos LOB. Isso aconteceu no passado e é ainda mais necessário agora no contexto da remoção do serializador BinaryFormatter. Ao evitar que o máximo possível seja serializado por acidente, não haverá compatibilidade com versões anteriores nem problemas de segurança relacionados à serialização binária em arquivos de recursos para tipos que não tenham um conversor de tipos dedicado.

  • Maior clareza e facilidade de manutenção do código: esse recurso garante que o comportamento da serialização seja transparente e intencional, ajudando nas análises de código e na manutenção futura.

  • Analise as propriedades marcadas pelo analisador e defina as configurações de serialização adequadas, 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/D