Condividi tramite


Nuovi analizzatori della sicurezza

Sono stati introdotti nuovi analizzatori della sicurezza per evitare la perdita accidentale di dati utente tramite determinate proprietà. Questi analizzatori applicano le procedure consigliate identificando le proprietà che non dispongono di impostazioni di serializzazione esplicite, ad esempio:

Gli analizzatori generano avvisi, ad esempio:

WFO1000: la proprietà 'property' non configura la serializzazione del codice per il contenuto della proprietà.

Per impostazione predefinita, ogni analizzatore genera un errore, assicurandosi che gli sviluppatori siano consapevoli dei potenziali problemi di sicurezza e perdita dei dati nelle prime fasi del processo di sviluppo.

Questa modifica mira a migliorare la sicurezza e la manutenibilità delle app Windows Form applicando procedure di serializzazione appropriate, riducendo così il rischio di esposizione accidentale dei dati.

Comportamento precedente

In precedenza, le proprietà in Windows Form e UserControl i controlli potrebbero essere serializzati dalla finestra di progettazione senza configurare esplicitamente il comportamento di serializzazione. Ciò potrebbe comportare l'inserimento di dati imprevisti nel codice generato o nei file di risorse, creando un potenziale rischio per la sicurezza. Questo comportamento è stato particolarmente problematico negli oggetti line-of-business UserControl personalizzati, in cui è stato facile ignorare la serializzazione di dati sensibili che non dovrebbero essere stati esposti. Ad esempio, le proprietà contenenti informazioni riservate, ad esempio i dati utente o le configurazioni interne, possono essere scritte direttamente nei file di .cs generati dalla finestra di progettazione o incorporati all'interno dei file .resx.

Nuovo comportamento

A partire da .NET 9, i nuovi analizzatori di sicurezza Windows Form applicano un controllo più rigoroso sulla serializzazione delle proprietà nei controlli e UserControl negli oggetti. Per impostazione predefinita, l'analizzatore genera un errore se una proprietà non ha un comportamento di serializzazione CodeDOM definito in modo esplicito. Questo comportamento garantisce che le proprietà non siano serializzate inavvertitamente. È possibile modificare le impostazioni di .editorconfig per modificare la gravità dell'analizzatore o eliminare l'errore.

Versione introdotta

.NET 9 RC 1

Tipo di modifica che causa un'interruzione

Questa modifica può influire sulla compatibilità dell'origine.

Motivo della modifica

Questa modifica è stata apportata per due motivi principali:

  • Sicurezza avanzata: forzando le definizioni di serializzazione esplicite, l'analizzatore riduce significativamente il rischio di esposizione involontaria dei dati, in particolare nelle applicazioni LINEB. Questo è successo in passato, ed è tutto più necessario ora nel contesto della rimozione del serializzatore BinaryFormatter. Impedendo il più possibile la serializzazione accidentale per iniziare, non ci saranno problemi di compatibilità con le versioni precedenti o problemi di sicurezza relativi alla serializzazione binaria nei file di risorse per i tipi che non dispongono di un convertitore di tipi dedicato.

  • Maggiore chiarezza e manutenibilità del codice: questa funzionalità garantisce che il comportamento di serializzazione sia trasparente e intenzionale, che facilita le revisioni del codice e la manutenzione futura.

  • Esaminare le proprietà contrassegnate dall'analizzatore e configurare le impostazioni di serializzazione appropriate in base alle esigenze.

  • Per una correzione rapida (non consigliata), aggiungere la voce seguente in un file con estensione editorconfig a livello di cartella della soluzione o cartella del progetto:

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

API interessate

  • N/D