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
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 rest za pomocą 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:
- Bezpieczne udostępnianie zawartości przy użyciu protokołu TLS/HTTPS.
- Institute a Content Security Policy (CSP).
- Przeprowadź kontrole integralności podźródła.
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 cyberatakom, jeśli Web View zostanie naruszony. 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
.
Linki do zewnętrznych adresów URL
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 zachowania domyślnego.
Zachowaj aktualność Web View wdrożonych aplikacji
Kontrolka BlazorWebView używa obecnie 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 nie są obsł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ą WKWebView
kontrolki 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.
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.