Udostępnij za pośrednictwem


zagadnienia dotyczące zabezpieczeń ASP.NET Core Blazor Hybrid

Uwaga

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz .NET i .NET Core Support Policy (Zasady obsługi platformy .NET Core). Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

Ważne

Te informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany, zanim zostanie wydany komercyjnie. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.

Aby zapoznać się z bieżącą wersją, zapoznaj się z wersją tego artykułu platformy .NET 8.

W tym artykule opisano zagadnienia dotyczące zabezpieczeń aplikacji Blazor Hybrid .

Blazor Hybrid aplikacje renderujące zawartość internetową wykonują kod platformy .NET wewnątrz platformy Web View. Kod platformy .NET współdziała z zawartością internetową za pośrednictwem kanału między kodem platformy .NET i .Web View

Kod WebView i .NET współdziałają w aplikacji w celu renderowania zawartości internetowej.

Zawartość internetowa renderowana w obiekcie Web View może pochodzić z zasobów udostępnianych przez aplikację z jednej z następujących lokalizacji:

  • Folder wwwroot w aplikacji.
  • Źródło zewnętrzne dla aplikacji. Na przykład źródło sieci, takie jak Internet.

Granica zaufania istnieje między kodem platformy .NET a kodem, który jest uruchamiany wewnątrz elementu Web View. Kod platformy .NET jest dostarczany przez aplikację i wszystkie zainstalowane przez Ciebie zaufane pakiety innych firm. Po skompiluj aplikację źródła zawartości kodu Web View platformy .NET nie mogą ulec zmianie.

W przeciwieństwie do źródeł kodu platformy .NET zawartości źródła zawartości z kodu uruchamianego wewnątrz Web View programu mogą pochodzić nie tylko z aplikacji, ale także ze źródeł zewnętrznych. Na przykład zasoby statyczne z zewnętrznej usługi Content Delivery Network (CDN) mogą być używane lub renderowane przez aplikację Web View.

Rozważ użycie kodu wewnątrz Web View aplikacji jako niezaufanego w taki sam sposób, że kod uruchomiony w przeglądarce dla aplikacji internetowej nie jest zaufany. Te same zagrożenia i ogólne zalecenia dotyczące zabezpieczeń dotyczą niezaufanych zasobów w Blazor Hybrid aplikacjach, co w przypadku innych typów aplikacji.

Jeśli to możliwe, unikaj ładowania zawartości ze źródła innej firmy. Aby ograniczyć ryzyko, możesz udostępnić zawartość bezpośrednio z aplikacji, pobierając zasoby zewnętrzne, sprawdzając, czy są one bezpieczne do obsługi użytkownikom, i umieszczając je w folderze aplikacji wwwroot w celu tworzenia pakietów w pozostałej części aplikacji. Po pobraniu zawartości zewnętrznej w celu dołączenia do aplikacji zalecamy skanowanie jej pod kątem wirusów i złośliwego oprogramowania przed umieszczeniem jej w wwwroot folderze aplikacji.

Jeśli aplikacja musi odwoływać się do zawartości z zewnętrznego źródła, zalecamy użycie typowych podejść zabezpieczeń sieci Web w celu zapewnienia aplikacji możliwości zablokowania ładowania zawartości w przypadku naruszenia zabezpieczeń zawartości:

Nawet jeśli wszystkie zasoby są pakowane do aplikacji i nie ładują się z żadnego źródła zewnętrznego, zachowaj ostrożność w przypadku problemów z kodem zasobów uruchamianym wewnątrz Web Viewelementu , ponieważ zasoby mogą mieć luki w zabezpieczeniach, które mogą zezwalać na ataki między witrynami (XSS ).

Ogólnie rzecz biorąc, struktura Blazor chroni przed XSS, zajmując się językiem HTML w bezpieczny sposób. Jednak niektóre wzorce programowania umożliwiają Razor składnikom wstrzykiwanie nieprzetworzonego kodu HTML do renderowanych danych wyjściowych, takich jak renderowanie zawartości ze źródła niezaufanego. Na przykład należy unikać renderowania zawartości HTML bezpośrednio z bazy danych. Ponadto biblioteki Języka JavaScript używane przez aplikację mogą manipulować kodem HTML w niebezpieczny sposób, aby przypadkowo lub celowo renderować niebezpieczne dane wyjściowe.

Z tych powodów najlepiej jest zastosować te same zabezpieczenia przed usługą XSS, które są zwykle stosowane do aplikacji internetowych. Zapobiegaj ładowaniu skryptów z nieznanych źródeł i nie implementuj potencjalnie niebezpiecznych funkcji języka JavaScript, takich jak eval i innych niebezpiecznych elementów pierwotnych języka JavaScript. Ustanowienie dostawcy CSP jest zalecane w celu zmniejszenia tych zagrożeń bezpieczeństwa.

Jeśli kod wewnątrz Web View obiektu zostanie naruszony, kod uzyska dostęp do całej zawartości wewnątrz Web View obiektu i może wchodzić w interakcje z hostem za pośrednictwem kanału międzyoperacyjnej. Z tego powodu każda zawartość pochodząca z Web View (zdarzeń, JS międzyoperacyjności) musi być traktowana jako niezaufany i weryfikowana w taki sam sposób, jak w przypadku innych kontekstów poufnych, takich jak w Blazor Server naruszonej aplikacji, która może prowadzić do złośliwych ataków na system hosta.

Nie przechowuj poufnych informacji, takich jak poświadczenia, tokeny zabezpieczające lub poufne dane użytkownika, w kontekście Web Viewelementu , ponieważ udostępnia informacje osobie atakującej w przypadku Web View naruszenia zabezpieczeń. Istnieją bezpieczniejsze alternatywy, takie jak obsługa poufnych informacji bezpośrednio w natywnej części aplikacji.

Zawartość zewnętrzna renderowana w obiekcie iframe

W przypadku używania elementu iframe do wyświetlania zawartości zewnętrznej Blazor Hybrid na stronie zalecamy, aby użytkownicy korzystali z funkcji piaskownicy, aby upewnić się, że zawartość jest odizolowana od strony nadrzędnej zawierającej aplikację. W poniższym Razor przykładzie składnika atrybut jest obecny dla tagu <iframe> w sandbox celu zastosowania funkcji piaskownicy do admin.html strony:

<iframe sandbox src="https://contoso.com/admin.html" />

Ostrzeżenie

Atrybut sandbox nie jest obsługiwany we wczesnych wersjach przeglądarki. Aby uzyskać więcej informacji, zobacz Can I use: sandbox.

Domyślnie linki do adresów URL spoza aplikacji są otwierane w odpowiedniej aplikacji zewnętrznej, a nie ładowane w obrębie .Web View Nie zalecamy zastępowania domyślnego zachowania.

Zachowaj aktualność Web View wdrożonych aplikacji

Domyślnie kontrolka BlazorWebView używa aktualnie zainstalowanego natywnego elementu specyficznego dla Web Viewplatformy. Ponieważ natywny Web View jest okresowo aktualizowany z obsługą nowych interfejsów API i poprawek problemów z zabezpieczeniami, może być konieczne upewnienie się, że aplikacja korzysta z Web View wersji spełniającej wymagania aplikacji.

Użyj jednej z następujących metod, aby zachować aktualność Web View wdrożonych aplikacji:

  • Na wszystkich platformach: sprawdź wersję i wyświetl użytkownikowi Web View monit o wykonanie wszelkich niezbędnych kroków w celu jej zaktualizowania.
  • Tylko w systemie Windows: spakuj stałą wersję Web View w aplikacji, używając jej zamiast udostępnionego Web Viewsystemu .

Android

System Android Web View jest dystrybuowany i aktualizowany za pośrednictwem Sklepu Google Play. Web View Sprawdź wersję, odczytując User-Agent ciąg. Web ViewPrzeczytaj właściwość "snavigator.userAgent" przy użyciu międzyoperacji języka JavaScript i opcjonalnie buforuj wartość przy użyciu pojedynczej usługi, jeśli ciąg agenta użytkownika jest wymagany poza kontekstem Razor składnika.

W przypadku korzystania z emulatora systemu Android:

  • Użyj wstępnie zainstalowanego urządzenia emulowanego z usługami Google Play. Emulowane urządzenia bez wstępnie zainstalowanych usług Google Play nieobsługiwane.
  • Zainstaluj przeglądarkę Google Chrome ze sklepu Google Play. Jeśli przeglądarka Google Chrome jest już zainstalowana, zaktualizuj przeglądarkę Chrome ze Sklepu Google Play. Jeśli emulowane urządzenie nie ma zainstalowanej najnowszej wersji przeglądarki Chrome, może nie mieć zainstalowanej najnowszej wersji systemu Android Web View .

Ios/Mac Catalyst

System iOS i Mac Catalyst oba używają WKWebViewkontrolki opartej na przeglądarce Safari, która jest aktualizowana przez system operacyjny. Podobnie jak w przypadku systemu Android, określ Web View wersję, odczytując Web Viewciąg .sUser-Agent.

Windows (.NET MAUI, WPF, Windows Forms)

W systemie Windows przeglądarka Microsoft Edge WebView2 oparta na chromium jest wymagana do uruchamiania Blazor aplikacji internetowych.

Domyślnie jest używana najnowsza zainstalowana wersja programu WebView2, znana jako Evergreen distribution, . Jeśli chcesz wysłać określoną wersję WebView2 aplikacji, użyj polecenia Fixed Version distribution.

Aby uzyskać więcej informacji na temat sprawdzania aktualnie zainstalowanej WebView2 wersji i trybów dystrybucji, zobacz dokumentacjęWebView2 dystrybucji.

Dodatkowe zasoby