Protezione (Guida per programmatori C#)

Aggiornamento: novembre 2007

La sicurezza è un aspetto necessario di tutte le applicazioni C#, che è necessario tenere in considerazione in ogni fase dello sviluppo e non solo al termine delle fasi di progettazione e implementazione.

Suggerimenti per la protezione specifici per C#

In questo elenco non sono segnalati tutti i possibili problemi di sicurezza, ma solo alcuni dei problemi più frequenti per gli sviluppatori C#.

  • Utilizzare la parola chiave checked per controllare il contesto di controllo dell'overflow nelle conversioni e nelle operazioni aritmetiche di tipo integrale.

  • Utilizzare sempre il tipo di dati più restrittivo per i parametri. Ad esempio, quando si passa un valore a un metodo che descrive la dimensione di una struttura dati, utilizzare un valore integer senza segno anziché un valore integer.

  • Non prendere decisioni basate su nomi di file. I nomi di file possono essere espressi in numerosi modi diversi ed è possibile eludere la verifica di tipi di file specifici.

  • Non impostare come hardcoded password o altre informazioni riservate nell'applicazione.

  • Convalidare sempre l'input utilizzato per generare query SQL.

  • Convalidare tutti gli input nei metodi. I metodi delle espressioni regolari nello spazio dei nomi System.Text.RegularExpressions sono utili per verificare che il formato dell'input sia corretto, ad esempio nel caso di un indirizzo di posta elettronica.

  • Non visualizzare le informazioni relative alle eccezioni, poiché forniscono utili indizi in caso di eventuali attacchi.

  • Verificare che l'applicazione funzioni anche se eseguita con autorizzazioni minime. Per l'esecuzione di alcune applicazioni è richiesto l'accesso come amministratore.

  • Non utilizzare gli algoritmi di crittografia personali. Utilizzare le classi System.Security.Cryptography.

  • Assegnare nomi sicuri agli assembly.

  • Non memorizzare informazioni riservate in file XML o altri file di configurazione.

  • Controllare con attenzione il codice gestito che esegue il wrapping del codice nativo. Confermare che il codice nativo sia sicuro.

  • Prestare la massima attenzione quando si utilizzano delegati passati dall'esterno dell'applicazione.

  • Eseguire lo strumento di analisi del codice di Visual Studio sugli assembly per verificare la conformità con le linee guida di progettazione di Microsoft .NET Framework. Questo strumento è inoltre in grado di individuare e segnalare oltre 200 errori del codice. Per ulteriori informazioni, vedere Rilevamento e correzione degli errori del codice gestito.

Altre risorse per la sicurezza

Nei siti Web Microsoft seguenti sono fornite informazioni dettagliate sulla creazione di software sicuro e affidabile.

Vedere anche

Concetti

Guida per programmatori C#

Strumenti di sicurezza

Altre risorse

Sicurezza nel codice nativo e nel codice .NET Framework

Indicazioni per la generazione di codice protetto