Argomenti sulla sicurezza di ASP.NET Core
ASP.NET Core consente agli sviluppatori di configurare e gestire la sicurezza. L'elenco seguente contiene i collegamenti ad argomenti relativi alla sicurezza:
- Autenticazione
- Autorizzazione
- Protezione dei dati
- Imposizione HTTPS
- Archiviazione sicura di segreti dell'app durante lo sviluppo
- Prevenzione di attacchi tramite richieste intersito false (XSRF/CSRF)
- Condivisione risorse tra le origini (CORS)
- Attacchi di tipo scripting intersito (XSS)
Queste funzionalità di sicurezza consentono di compilare app ASP.NET Core affidabili e sicure.
Per Blazor la copertura della sicurezza, che aggiunge o sostituisce le linee guida in questo nodo, vedere ASP.NET'autenticazione e autorizzazione core Blazor e gli altri articoli nel Blazornodo Sicurezza e Identity nodo.
Funzionalità di sicurezza di ASP.NET Core
ASP.NET Core offre molti strumenti e librerie per proteggere le app core ASP.NET, ad esempio provider predefiniti identity e servizi di terze parti identity come Facebook, Twitter e LinkedIn. ASP.NET Core offre diversi approcci per archiviare i segreti delle app.
Confronto tra autenticazione e autorizzazione
L'autenticazione è un processo in cui un utente fornisce le credenziali che vengono quindi confrontate con quelle archiviate in un sistema operativo, in un database, in un'applicazione o in una risorsa. Se corrispondono, gli utenti vengono autenticati correttamente e quindi possono eseguire azioni per cui sono autorizzati, durante un processo di autorizzazione. L'autorizzazione è il processo che determina quali operazioni può eseguire un utente.
È possibile considerare l'autenticazione come un modo per entrare in uno spazio, ad esempio un server, un database, un'app o una risorsa, mentre l'autorizzazione definisce le azioni che l'utente può eseguire e su quali oggetti all'interno di tale spazio (server, database o app).
Vulnerabilità comuni nel software
ASP.NET Core ed Entity Framework contengono funzionalità che consentono di proteggere le app e impedire violazioni della sicurezza. L'elenco di collegamenti seguente offre documentazione in cui sono descritte le tecniche per evitare le vulnerabilità della sicurezza più comuni nelle app Web:
- Attacchi di tipo scripting intersito (XSS)
- Attacchi SQL injection
- Prevenire attacchi tramite richieste intersito false (XSRF/CSRF)
- Attacchi di reindirizzamento aperti
Esistono altre vulnerabilità di cui è necessario essere consapevoli. Per altre informazioni, vedere gli altri articoli della sezione Sicurezza e Identity del sommario.
Proteggere i flussi di autenticazione
È consigliabile usare l'opzione di autenticazione sicura più sicura. Per i servizi di Azure, l'autenticazione più sicura è l'identità gestita.
Evitare la concessione delle credenziali della password del proprietario della risorsa perché:
- Espone la password dell'utente al client.
- È un rischio significativo per la sicurezza.
- Deve essere usato solo quando altri flussi di autenticazione non sono possibili.
Le identità gestite sono un modo sicuro per eseguire l'autenticazione ai servizi senza dover archiviare le credenziali nel codice, nelle variabili di ambiente o nei file di configurazione. Le identità gestite sono disponibili per i servizi di Azure e possono essere usate con Azure SQL, Archiviazione di Azure e altri servizi di Azure:
- Identità gestite in Microsoft Entra for Azure SQL
- Identità gestite per servizio app e Funzioni di Azure
- Proteggere i flussi di autenticazione
Quando l'app viene distribuita in un server di test, è possibile usare una variabile di ambiente per impostare il stringa di connessione su un server di database di test. Per altre informazioni, vedere Configurazione. Le variabili di ambiente vengono in genere archiviate in testo normale e non crittografato. Se il computer o il processo è compromesso, è possibile accedere alle variabili di ambiente da parti non attendibili. È consigliabile usare le variabili di ambiente per archiviare un stringa di connessione di produzione perché non è l'approccio più sicuro.
Linee guida per i dati di configurazione:
- Non archiviare mai la password o altri dati sensibili nel codice del provider di configurazione o in file di configurazione di testo normale. Per l'archiviazione di segreti per lo sviluppo, è possibile usare lo strumento Secret Manager.
- Non usare i segreti di produzione in ambienti di sviluppo o di test.
- Specificare i segreti all'esterno del progetto in modo che non possano essere inavvertitamente inviati a un repository del codice sorgente.
Linee guida per i dati di configurazione:
- Non archiviare mai la password o altri dati sensibili nel codice del provider di configurazione o in file di configurazione di testo normale. Per l'archiviazione di segreti per lo sviluppo, è possibile usare lo strumento Secret Manager.
- Non usare i segreti di produzione in ambienti di sviluppo o di test.
- Specificare i segreti all'esterno del progetto in modo che non possano essere inavvertitamente inviati a un repository del codice sorgente.
Per altre informazioni, vedi:
- Consigli sulle procedure consigliate gestite identity
- Connessione dall'applicazione alle risorse senza gestire le credenziali nel codice
- Servizi di Azure che possono usare identità gestite per accedere ad altri servizi
- Procedura corrente consigliata per la sicurezza OAuth IETF 2.0
Per informazioni su altri provider di servizi cloud, vedere:
- AWS (Amazon Web Services): AWS Servizio di gestione delle chiavi (KMS)
- Panoramica di Google Cloud Servizio di gestione delle chiavi