Sicurezza e programmazione (C# e Visual Basic)

La necessità di risolvere importanti problemi di sicurezza è un problema che si pone agli sviluppatori non appena iniziano a utilizzare .NET Framework.In questa panoramica vengono illustrate le applicazioni Windows e Web e le fasi dello sviluppo relative a implementazione, debug e distribuzione.

Cenni preliminari

Visual Studio consente di avere il controllo della sicurezza delle applicazioni in esecuzione.Tale controllo, fornito da .NET Framework, richiede tuttavia di considerare la sicurezza durante la programmazione.Esistono problemi di sicurezza che è necessario risolvere, se si desidera che le applicazioni create risultino facilmente utilizzabili agli utenti.

Le situazioni più comuni in cui è necessario risolvere problemi di sicurezza sono tre:

  • Autorizzazioni: l'utente che esegue l'applicazione potrebbe negare i privilegi all'applicazione,ad esempio nel caso in cui l'applicazione viene eseguita da una posizione da cui, secondo quanto specificato dall'utente, non sarà consentito accedere ad alcune risorse di sistema.L'utente, ad esempio, può configurare Common Language Runtime in modo da negare i privilegi relativi ai file a qualsiasi applicazione memorizzata su un'unità di rete.È necessario essere a conoscenza di questa configurazione quando si scrive il codice, che dovrà rispondere in modo appropriato alle situazioni di questo tipo.Per ulteriori informazioni, vedere Criteri di sicurezza di .NET Framework.

  • Applicazioni Web: è necessario impedire agli utenti che accedono alle applicazioni Web dai server Web di eseguire codice dannoso o di corrompere i dati sui server.Per ulteriori informazioni, vedere la classe Sicurezza dei siti Web ASP.NET.

  • Configurazione di Visual Studio: la configurazione scelta per Visual Studio può accrescere o ridurre il rischio di attacchi al server mediante codice dannoso.Per ulteriori informazioni, vedere la classe User Rights and Visual Studio.

La sicurezza delle risorse è un processo che richiede diverse tecnologie e copre l'intero ciclo di sviluppo.Grazie a un'attenta progettazione, implementazione, verifica e distribuzione, è possibile creare applicazioni con un elevato livello di sicurezza.Per proteggere le applicazioni, sono disponibili le tecnologie di sicurezza di ASP.NET, il sistema operativo e i browser Web.

Suggerimenti specifici per la sicurezza

In questo elenco non sono segnalati tutti i possibili problemi di sicurezza,vengono descritti alcuni problemi comuni per gli sviluppatori in Visual Basic e C#.

  • Assicurarsi che sia abilitato il controllo dell'overflow di Integer.In C# è possibile abilitare questa funzionalità utilizzando la parola chiave checked o la Finestra di dialogo Impostazioni di compilazione avanzate (C#).In Visual Basic è possibile utilizzare la Finestra di dialogo Impostazioni del compilatore avanzate (Visual Basic).

  • 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 Unsigned Integer anziché 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 Cenni preliminari sull'analisi del codice gestito.

Altre risorse per la sicurezza

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

Argomenti correlati

Titolo

Descrizione

Nozioni fondamentali sulla sicurezza in .NET Framework

Vengono forniti cenni preliminari sulla sicurezza di .NET Framework e vengono illustrate le tecniche di codifica per un ambiente parzialmente attendibile.

Strumenti di codifica per la creazione di applicazioni protette

Vengono illustrati gli strumenti di Visual Studio che consentono di proteggere un server di sviluppo.

Autorizzazioni di accesso al codice e sicurezza

Vengono illustrati gli oggetti utilizzati per proteggere risorse e operazioni da utenti non autorizzati.

Vedere anche

Attività

Esempi relativi alla sicurezza di Visual Basic

Concetti

Security in Visual Studio

Linee guida per la generazione di codice sicuro

Altre risorse

Sicurezza di Windows Form

Sicurezza dei siti Web ASP.NET