Aspekty zabezpečení ASP.NET Core Blazor Hybrid
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Upozorňující
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v tématu .NET a .NET Core Zásady podpory. Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete ve verzi .NET 8 tohoto článku.
Tento článek popisuje aspekty zabezpečení pro Blazor Hybrid aplikace.
Blazor Hybrid aplikace, které vykreslují webový obsah, spouští kód .NET uvnitř platformy Web View. Kód .NET komunikuje s webovým obsahem prostřednictvím zprostředkovatele komunikace mezi kódem .NET a kódem Web View.
Webový obsah vykreslený do objektu Web View může pocházet z prostředků poskytovaných aplikací z některého z následujících umístění:
- Složka
wwwroot
v aplikaci. - Zdroj externí aplikace. Například zdroj sítě, například internet.
Hranice důvěryhodnosti existuje mezi kódem .NET a kódem, který běží uvnitř Web View. Kód .NET poskytuje aplikace a všechny důvěryhodné balíčky třetích stran, které jste nainstalovali. Po sestavení aplikace se zdroje obsahu kódu Web View .NET nemůžou změnit.
Na rozdíl od zdrojů kódu .NET obsahu mohou zdroje obsahu z kódu spuštěného Web View uvnitř aplikace pocházet nejen z aplikace, ale i z externích zdrojů. Například statické prostředky z externí sítě pro doručování obsahu (CDN) mohou být použity nebo vykresleny aplikací Web View.
Vezměte v úvahu kód uvnitř Web View nedůvěryhodného způsobu, jakým kód spuštěný v prohlížeči pro webovou aplikaci není důvěryhodný. Stejné hrozby a obecná doporučení zabezpečení platí pro nedůvěryhodné prostředky v Blazor Hybrid aplikacích jako u jiných typů aplikací.
Pokud je to možné, vyhněte se načítání obsahu z původu třetí strany. Pokud chcete zmírnit riziko, můžete obsah obsluhovat přímo z aplikace stažením externích prostředků, ověřením, že jsou bezpečné obsluhovat uživatele a umístit je do složky aplikace wwwroot
pro balení s rest aplikací. Když se externí obsah stáhne pro zahrnutí do aplikace, doporučujeme před jeho umístěním do wwwroot
složky aplikace vyhledat viry a malware.
Pokud vaše aplikace musí odkazovat na obsah z externího původu, doporučujeme použít běžné přístupy k zabezpečení webu, abyste aplikaci poskytli možnost zablokovat načítání obsahu v případě ohrožení obsahu:
- Zabezpečeně obsluhujte obsah pomocí protokolu TLS/HTTPS.
- Vytvoření zásad zabezpečení obsahu (CSP)
- Proveďte kontroly integrity podsourců .
I když jsou všechny prostředky zabalené do aplikace a nenačítají se z externího původu, zůstaňte obezřetní ohledně problémů v kódu prostředků, který běží uvnitř objektu Web View, protože prostředky můžou mít chyby zabezpečení, které by mohly umožňovat skriptování mezi weby (XSS).
Obecně platí, že architektura chrání před XSS tím, Blazor že pracuje se html bezpečnými způsoby. Některé programovací vzory však umožňují Razor komponentám vložit nezpracovaný kód HTML do vykresleného výstupu, například vykreslování obsahu z nedůvěryhodného zdroje. Například vykreslování obsahu HTML přímo z databáze by se mělo vyhnout. JavaScriptové knihovny používané aplikací navíc můžou manipulovat s HTML nebezpečnými způsoby neúmyslně nebo záměrně vykreslovat nebezpečný výstup.
Z těchto důvodů je nejlepší použít stejnou ochranu proti XSS, které se běžně používají u webových aplikací. Zabránit načítání skriptů z neznámých zdrojů a neimplementovat potenciálně nebezpečné javascriptové funkce, jako eval
jsou a další nebezpečné javascriptové primitivy. Vytvoření CSP se doporučuje snížit tato rizika zabezpečení.
Pokud dojde k ohrožení zabezpečení kódu, Web View získá kód přístup ke všemu obsahu uvnitř Web View a může komunikovat s hostitelem prostřednictvím kanálu vzájemné spolupráce. Z tohoto důvodu musí být veškerý obsah pocházející z Web View (událostí, JS spolupráce) považován za nedůvěryhodný a ověřený stejným způsobem jako u jiných citlivých kontextů, jako je například v ohrožené Blazor Server aplikaci, která může vést ke škodlivým útokům na hostitelský systém.
Neukládejte citlivé informace, jako jsou přihlašovací údaje, tokeny zabezpečení nebo citlivá uživatelská data, v kontextu Web Viewtohoto objektu, protože informace zpřístupní kyberútoku, pokud Web View dojde k ohrožení zabezpečení. Existují bezpečnější alternativy, například zpracování citlivých informací přímo v nativní části aplikace.
Externí obsah vykreslený v objektu iframe
Při použití funkce k zobrazení externího iframe
obsahu na Blazor Hybrid stránce doporučujeme, aby uživatelé využili funkce sandboxu, aby se zajistilo, že je obsah izolovaný od nadřazené stránky obsahující aplikaci. V následujícím Razor příkladusandbox
komponenty je atribut k dispozici pro <iframe>
značku, aby na stránku použila funkce admin.html
sandboxu:
<iframe sandbox src="https://contoso.com/admin.html" />
Upozorňující
Atribut sandbox
není v dřívějších verzích prohlížeče podporovaný. Další informace naleznete v tématu Mohu použít: sandbox
.
Odkazy na externí adresy URL
Odkazy na adresy URL mimo aplikaci se otevřou v příslušné externí aplikaci, nenačtou se v rámci aplikace Web View. Nedoporučujeme přepisovat výchozí chování.
Udržování aktuálního Web View stavu v nasazených aplikacích
Ovládací BlazorWebView prvek používá aktuálně nainstalovanou nativní platformu Web Viewspecifickou pro danou platformu . Vzhledem k tomu, že se nativní rozhraní Web View API pravidelně aktualizuje o podporu nových rozhraní API a oprav problémů se zabezpečením, může být nutné zajistit, aby aplikace používala Web View verzi, která splňuje požadavky aplikace.
Pokud chcete zachovat Web View aktuální stav v nasazených aplikacích, použijte jeden z následujících přístupů:
- Na všech platformách: Zkontrolujte Web View verzi a vyzve uživatele, aby ho aktualizoval.
- Pouze ve Windows: Zabalte v aplikaci pevnou verzi Web View a použijte ji místo sdíleného Web Viewsystému .
Android
Android Web View se distribuuje a aktualizuje prostřednictvím Obchodu Google Play. Web View Zkontrolujte verzi přečtením User-Agent
řetězce. Web Viewnavigator.userAgent
Pokud je řetězec uživatelského agenta povinný mimo Razor kontext komponenty, přečtěte si vlastnost JavaScriptu a volitelně do mezipaměti hodnotu použijte jednoúčelovou službu.
Při použití emulátoru Androidu:
- Použijte emulované zařízení s předinstalovanými službami Google Play. Emulovaná zařízení bez předinstalovaných služeb Google Play se nepodporují.
- Nainstalujte Google Chrome z Obchodu Google Play. Pokud už je Google Chrome nainstalovaný, aktualizujte Chrome z Obchodu Google Play. Pokud emulované zařízení nemá nainstalovanou nejnovější verzi Chromu, nemusí mít nainstalovanou nejnovější verzi Androidu Web View .
Ios/Mac Catalyst
iOS i Mac Catalyst oba používají WKWebView
ovládací prvek založený na Safari, který je aktualizován operačním systémem. Podobně jako v případě Androidu Web View zjistěte verzi tak, že si přečtete User-Agent
Web Viewřetězec.
Windows (.NET MAUI, WPF, model Windows Forms)
Ve Windows se ke spouštění Blazor webových aplikací vyžaduje Microsoft Edge WebView2
založený na Chromiu.
Používá se nejnovější nainstalovaná verze WebView2
označovaná jako "the Evergreen distribution". Pokud chcete odeslat konkrétní verzi WebView2
aplikace, použijte příkaz Fixed Version distribution.
Další informace o kontrole aktuálně nainstalované WebView2
verze a distribučních režimů najdete v WebView2
dokumentaci k distribuci.