Condividi tramite


Panoramica della sicurezza

La protezione di un'applicazione è un processo in corso. Non ci sarà mai un punto in cui uno sviluppatore può garantire che un'applicazione sia sicura da tutti gli attacchi, perché è impossibile prevedere quali tipi di attacchi futuri verranno generati da nuove tecnologie. Al contrario, solo perché nessuno ha ancora scoperto (o pubblicato) difetti di sicurezza in un sistema non significa che non esistano o potrebbero esistere. È necessario pianificare la sicurezza durante la fase di progettazione del progetto, nonché pianificare la modalità di gestione della sicurezza nel corso della durata dell'applicazione.

Progettazione per la sicurezza

Uno dei principali problemi nello sviluppo di applicazioni sicure è che la sicurezza è spesso un'operazione da implementare dopo il completamento del codice di un progetto. La mancata creazione di sicurezza in un'applicazione all'inizio comporta applicazioni insicure perché è stato dato poco pensiero a ciò che rende un'applicazione sicura.

L'implementazione della sicurezza dell'ultimo minuto porta a più bug, poiché il software si interrompe in base alle nuove restrizioni o deve essere riscritto per supportare funzionalità impreviste. Ogni riga di codice modificato contiene la possibilità di introdurre un nuovo bug. Per questo motivo, è consigliabile prendere in considerazione la sicurezza all'inizio del processo di sviluppo in modo che possa procedere in parallelo con lo sviluppo di nuove funzionalità.

Modellazione delle minacce

Non è possibile proteggere un sistema da attacchi, a meno che non si comprendano tutti i potenziali attacchi a cui è esposto. Il processo di valutazione delle minacce alla sicurezza, denominato modellazione delle minacce, è necessario per determinare la probabilità e le ramificazioni delle violazioni della sicurezza nell'applicazione ADO.NET.

La modellazione delle minacce è costituita da tre passaggi generali: comprendere la vista dell'avversario, caratterizzare la sicurezza del sistema e determinare le minacce.

La modellazione delle minacce è un approccio iterativo per valutare le vulnerabilità nell'applicazione per individuare quelle più pericolose perché espongono i dati più sensibili. Dopo aver identificato le vulnerabilità, è possibile classificarle in ordine di gravità e creare un set di contromisure con priorità per contrastare le minacce.

Per altre informazioni, vedere le risorse seguenti:

Conto risorse Descrizione
Sito di modellazione delle minacce nel portale di progettazione della sicurezza Le risorse in questa pagina consentono di comprendere il processo di modellazione delle minacce e creare modelli di minaccia che è possibile usare per proteggere le proprie applicazioni

Principio dei privilegi minimi

Quando si progetta, compila e distribuisce l'applicazione, è necessario presupporre che l'applicazione venga attaccata. Spesso questi attacchi provengono da codice dannoso che viene eseguito con le autorizzazioni dell'utente che esegue il codice. Altri possono avere origine da codice ben intenzionato che è stato sfruttato da un attaccante. Quando si pianifica la sicurezza, si presuppone sempre che si verifichi lo scenario peggiore.

Una contro misura che è possibile usare consiste nel cercare di erigere il maggior numero possibile di muri intorno al codice eseguendo con privilegi minimi. Il principio dei privilegi minimi indica che tutti i privilegi specificati devono essere concessi alla quantità minima di codice necessaria per la durata più breve del tempo necessario per eseguire il processo.

La procedura consigliata per la creazione di applicazioni sicure consiste nell'iniziare senza autorizzazioni e quindi aggiungere le autorizzazioni più strette per l'attività specifica da eseguire. Al contrario, partire da tutte le autorizzazioni e quindi negando singole autorizzazioni porta ad applicazioni non sicure che sono difficili da testare e mantenere perché vulnerabilità di sicurezza possono esistere dalla concessione involontaria di più autorizzazioni del necessario.

Per altre informazioni sulla protezione delle applicazioni, vedere le risorse seguenti:

Conto risorse Descrizione
Protezione delle applicazioni Contiene collegamenti ad argomenti generali sulla sicurezza. Contiene anche collegamenti ad argomenti per la protezione di applicazioni distribuite, applicazioni Web, applicazioni per dispositivi mobili e applicazioni desktop.

Sicurezza dall'accesso di codice (CAS, Code Access Security)

La sicurezza dell'accesso al codice è un meccanismo che consente di limitare l'accesso al codice alle risorse e alle operazioni protette. In .NET Framework, cas esegue le funzioni seguenti:

  • Definisce autorizzazioni e set di autorizzazioni che rappresentano il diritto di accedere a varie risorse di sistema.

  • Consente agli amministratori di configurare i criteri di sicurezza associando set di autorizzazioni a gruppi di codice (gruppi di codice).

  • Consente al codice di richiedere le autorizzazioni necessarie per l'esecuzione, nonché le autorizzazioni utili per avere e specifica quali autorizzazioni il codice non deve mai avere.

  • Concede le autorizzazioni a ogni assembly caricato, in base alle autorizzazioni richieste dal codice e alle operazioni consentite dai criteri di sicurezza.

  • Consente al codice di richiedere che i chiamanti dispongano di autorizzazioni specifiche.

  • Consente al codice di richiedere che i chiamanti dispongano di una firma digitale, consentendo così solo ai chiamanti di una determinata organizzazione o sito di chiamare il codice protetto.

  • Applica restrizioni al codice in fase di esecuzione confrontando le autorizzazioni concesse di ogni chiamante nello stack di chiamate con le autorizzazioni che i chiamanti devono avere.

Per ridurre al minimo la quantità di danni che possono verificarsi se un attacco riesce, scegliere un contesto di sicurezza per il codice che concede l'accesso solo alle risorse necessarie per svolgere il proprio lavoro e non più.

Per altre informazioni, vedere le risorse seguenti:

Conto risorse Descrizione
Sicurezza dell'accesso al codice e ADO.NET Descrive le interazioni tra la sicurezza dell'accesso al codice, la sicurezza basata sui ruoli e gli ambienti parzialmente attendibili dal punto di vista di un'applicazione ADO.NET.
Sicurezza per l'accesso al codice Contiene collegamenti ad argomenti aggiuntivi che descrivono CAS nel .NET Framework.

Sicurezza dei database

Il principio dei privilegi minimi si applica anche all'origine dati. Alcune linee guida generali per la sicurezza del database includono:

  • Creare account con i privilegi più bassi possibili.

  • Non consentire agli utenti di accedere agli account amministrativi solo per il funzionamento del codice.

  • Non restituire messaggi di errore sul lato server alle applicazioni client.

  • Convalidare tutti gli input sia nel client che nel server.

  • Usare comandi con parametri ed evitare istruzioni SQL dinamiche.

  • Abilitare il controllo della sicurezza e la registrazione per il database in uso in modo che vengano avvisati di eventuali violazioni della sicurezza.

Per altre informazioni, vedere le risorse seguenti:

Conto risorse Descrizione
Sicurezza di SQL Server Offre una panoramica della sicurezza di SQL Server con scenari di applicazione che forniscono indicazioni per la creazione di applicazioni ADO.NET sicure destinate a SQL Server.
Raccomandazioni per le strategie di accesso ai dati Fornisce consigli per l'accesso ai dati e l'esecuzione di operazioni di database.

Criteri di sicurezza e amministrazione

L'amministrazione impropria dei criteri di sicurezza dall'accesso al codice può potenzialmente creare punti deboli per la sicurezza. Dopo la distribuzione di un'applicazione, è consigliabile usare le tecniche per il monitoraggio della sicurezza e valutare i rischi man mano che emergono nuove minacce.

Per altre informazioni, vedere le risorse seguenti:

Conto risorse Descrizione
gestione dei criteri di sicurezza Fornisce informazioni sulla creazione e l'amministrazione dei criteri di sicurezza.
Procedure consigliate per i criteri di sicurezza Fornisce collegamenti che descrivono come amministrare i criteri di sicurezza.

Vedere anche