considerazioni sulla sicurezza di ASP.NET Core Blazor Hybrid
Nota
Questa non è la versione più recente di questo articolo. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Avviso
Questa versione di ASP.NET Core non è più supportata. Per altre informazioni, vedere i criteri di supporto di .NET e .NET Core. Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Importante
Queste informazioni si riferiscono a un prodotto non definitive che può essere modificato in modo sostanziale prima che venga rilasciato commercialmente. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Per la versione corrente, vedere la versione .NET 9 di questo articolo.
Questo articolo descrive le considerazioni sulla sicurezza per Blazor Hybrid le app.
Blazor Hybrid le app che eseguono il rendering del contenuto Web eseguono codice .NET all'interno di una piattaforma Web View. Il codice .NET interagisce con il contenuto Web tramite un canale di interoperabilità tra il codice .NET e .Web View
Il contenuto Web sottoposto a rendering in Web View può provenire dagli asset forniti dall'app da una delle posizioni seguenti:
wwwroot
Cartella nell'app.- Origine esterna all'app. Ad esempio, un'origine di rete, ad esempio Internet.
Esiste un limite di attendibilità tra il codice .NET e il codice eseguito all'interno di Web View. Il codice .NET viene fornito dall'app e da eventuali pacchetti di terze parti attendibili installati. Dopo la compilazione dell'app, le origini del contenuto del codice Web View .NET non possono cambiare.
A differenza delle origini di codice .NET del contenuto, le origini del contenuto dal codice eseguito all'interno Web View di possono provenire non solo dall'app, ma anche da origini esterne. Ad esempio, gli asset statici di un rete per la distribuzione di contenuti esterno (RETE CDN) possono essere usati o sottoposti a rendering da un'appWeb View.
Si consideri il codice all'interno di Web View come non attendibile nello stesso modo in cui il codice in esecuzione all'interno del browser per un'app Web non è attendibile. Le stesse minacce e le stesse raccomandazioni di sicurezza generali si applicano alle risorse non attendibili nelle Blazor Hybrid app, come per altri tipi di app.
Se possibile, evitare di caricare il contenuto da un'origine di terze parti. Per ridurre i rischi, potresti essere in grado di gestire il contenuto direttamente dall'app scaricando gli asset esterni, verificando che siano sicuri per servire agli utenti e inserendoli nella cartella dell'app wwwroot
per la creazione di pacchetti con l'oggetto rest dell'app. Quando il contenuto esterno viene scaricato per l'inclusione nell'app, è consigliabile analizzarlo per individuare virus e malware prima di inserirlo nella wwwroot
cartella dell'app.
Se l'app deve fare riferimento al contenuto da un'origine esterna, è consigliabile usare approcci comuni per la sicurezza Web per fornire all'app un'opportunità per impedire il caricamento del contenuto se il contenuto viene compromesso:
- Gestire il contenuto in modo sicuro con TLS/HTTPS.
- Institute a Content Security Policy (CSP).
- Eseguire controlli di integrità della sottorisorsa .
Anche se tutte le risorse vengono compresse nell'app e non vengono caricate da alcuna origine esterna, rimanere cauti sui problemi nel codice delle risorse eseguite all'interno Web Viewdi , perché le risorse potrebbero avere vulnerabilità che potrebbero consentire attacchi XSS (Cross-Site Scripting).
In generale, il Blazor framework protegge da XSS gestendo HTML in modo sicuro. Tuttavia, alcuni modelli di programmazione consentono ai componenti di Razor inserire codice HTML non elaborato nell'output sottoposto a rendering, ad esempio il rendering del contenuto da un'origine non attendibile. Ad esempio, è consigliabile evitare il rendering del contenuto HTML direttamente da un database. Inoltre, le librerie JavaScript usate dall'app potrebbero modificare html in modi non sicuri per eseguire inavvertitamente o deliberatamente il rendering di output non sicuro.
Per questi motivi, è consigliabile applicare le stesse protezioni contro XSS normalmente applicate alle app Web. Impedire il caricamento di script da origini sconosciute e non implementare funzionalità JavaScript potenzialmente non sicure, ad esempio eval
e altre primitive JavaScript non sicure. È consigliabile stabilire un provider di servizi di configurazione per ridurre questi rischi per la sicurezza.
Se il codice all'interno Web View di viene compromesso, il codice ottiene l'accesso a tutto il contenuto all'interno Web View di e potrebbe interagire con l'host tramite il canale di interoperabilità. Per questo motivo, qualsiasi contenuto proveniente da Web View (eventi, JS interoperabilità) deve essere considerato non attendibile e convalidato nello stesso modo di altri contesti sensibili, ad esempio in un'app compromessa Blazor Server che può causare attacchi dannosi nel sistema host.
Non archiviare informazioni riservate, ad esempio credenziali, token di sicurezza o dati utente sensibili, nel contesto di Web View, perché rende disponibili le informazioni a un cyberattacker se Web View è compromesso. Esistono alternative più sicure, ad esempio la gestione delle informazioni riservate direttamente all'interno della parte nativa dell'app.
Contenuto esterno sottoposto a rendering in un iframe
Quando si usa un oggetto iframe
per visualizzare contenuto esterno all'interno di una Blazor Hybrid pagina, è consigliabile usare le funzionalità di sandboxing per assicurarsi che il contenuto sia isolato dalla pagina padre contenente l'app. Nell'esempio di componente seguenteRazor, l'attributo sandbox
è presente per il <iframe>
tag per applicare le funzionalità di sandboxing alla admin.html
pagina:
<iframe sandbox src="https://contoso.com/admin.html" />
Avviso
L'attributo sandbox
non è supportato nelle versioni precedenti del browser. Per altre informazioni, vedere È possibile usare: sandbox
.
Collegamenti a URL esterni
I collegamenti agli URL all'esterno dell'app vengono aperti in un'app esterna appropriata, non caricata all'interno di Web View. Non è consigliabile eseguire l'override del comportamento predefinito.
Mantenere l'elemento Web View corrente nelle app distribuite
Il BlazorWebView controllo usa l'oggetto nativo Web Viewspecifico della piattaforma attualmente installato. Poiché il nativo Web View viene aggiornato periodicamente con il supporto per le nuove API e le correzioni per i problemi di sicurezza, potrebbe essere necessario assicurarsi che un'app usi una Web View versione che soddisfi i requisiti dell'app.
Usare uno degli approcci seguenti per mantenere aggiornato le Web View app distribuite:
- In tutte le piattaforme: controllare la Web View versione e chiedere all'utente di eseguire i passaggi necessari per aggiornarlo.
- Solo in Windows: creare un pacchetto di una versione Web View fissa all'interno dell'app, usandola al posto dell'oggetto condiviso Web Viewdel sistema.
Android
Android Web View viene distribuito e aggiornato tramite Google Play Store. Controllare la Web View versione leggendo la User-Agent
stringa. Leggere la Web Viewproprietà usando navigator.userAgent
l'interoperabilità JavaScript e, facoltativamente, memorizzare nella cache il valore usando un servizio singleton se la stringa dell'agente utente è necessaria all'esterno di un Razor contesto del componente.
Quando si usa l'emulatore Android:
- Usa un dispositivo emulato con Google Play Services preinstallato. I dispositivi emulati senza Google Play Services preinstallati non sono supportati.
- Installare Google Chrome da Google Play Store. Se Google Chrome è già installato, aggiornare Chrome da Google Play Store. Se un dispositivo emulato non ha installato la versione più recente di Chrome, potrebbe non essere installata la versione più recente di Android Web View .
Ios/Mac Catalyst
iOS e Mac Catalyst entrambi usano WKWebView
, un controllo basato su Safari, che viene aggiornato dal sistema operativo. Analogamente al caso Android, determinare la Web View versione leggendo la Web Viewstringa .User-Agent
Windows (.NET MAUI, WPF, Windows Form)
In Windows, Microsoft Edge WebView2
basato su Chromium è necessario per eseguire Blazor app Web.
Viene usata la Evergreen distributionversione installata più recente di WebView2
, nota come , . Se vuoi spedire una versione specifica di WebView2
con l'app, usa .Fixed Version distribution
Per altre informazioni sul controllo della versione attualmente installata WebView2
e delle modalità di distribuzione, vedere la documentazione sulla WebView2
distribuzione.