Share via


ASP.NET Core Blazor Hybrid Sicherheitsaspekte

Hinweis

Dies ist nicht die neueste Version dieses Artikels. Informationen zum aktuellen Release finden Sie in der .NET 8-Version dieses Artikels.

Wichtig

Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Freigabe möglicherweise noch wesentlichen Änderungen unterliegt. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.

Informationen zum aktuellen Release finden Sie in der .NET 8-Version dieses Artikels.

Dieser Artikel beschreibt die Sicherheitsaspekte für Blazor Hybrid Apps.

Blazor Hybrid Apps, die Webinhalte rendern, führen .NET-Code innerhalb einer Plattform Web View aus. Der .NET-Code interagiert mit dem Webinhalt über einen Interop-Kanal zwischen dem .NET-Code und dem Web View.

WebView und .NET-Code arbeiten innerhalb der App zusammen, um Webinhalte zu rendern.

Der in den Web View gerenderte Webinhalt kann von durch die App bereitgestellten Ressourcen stammen, aus einem der folgenden Speicherorte:

  • Der wwwroot Ordner in der App.
  • Eine Externe Quelle außerhalb der App. Beispielsweise eine Netzwerkquelle wie das Internet.

Es existiert eine Vertrauensgrenze zwischen dem .NET-Code und dem Code, der innerhalb des Web View ausgeführt wird. .NET-Code wird von der App und von allen vertrauenswürdigen Drittanbieterpaketen bereitgestellt, die Sie installiert haben. Nachdem die App erstellt wurde, können sich die .NET-Code Web View Inhaltsquellen nicht ändern.

Im Gegensatz zu den .NET-Codequellen von Inhalten können Inhaltsquellen aus dem innerhalb der Web View ausgeführten Code nicht nur aus der App, sondern auch aus externen Quellen stammen. Beispielsweise können statische Ressourcen aus einem externen Content Delivery Network (CDN) vom Web View einer App verwendet oder gerendert werden.

Betrachten Sie den Code innerhalb des Web View in der gleichen Weise als nicht vertrauenswürdig wie den Code, der im Browser für eine Web-App ausgeführt wird, und nicht vertrauenswürdig ist. Für nicht vertrauenswürdige Ressourcen in Blazor Hybrid Apps gelten die gleichen Bedrohungen und allgemeinen Sicherheitsempfehlungen wie für andere Arten von Apps.

Vermeiden Sie wenn möglich das Laden von Inhalten aus einem Drittanbieter-Ursprung. Um das Risiko zu verringern, können Sie Inhalte möglicherweise direkt aus der App bereitstellen, indem Sie die externen Ressourcen herunterladen. Stellen Sie sicher, dass sie für Benutzer sicher sind, und fügen Sie diese in den wwwroot Ordner der App für die Paketerstellung mit dem Rest der App ein. Wir empfehlen externe Inhalte, die zur Aufnahme in die App heruntergeladen werden, nach Viren und Schadsoftware zu scannen, bevor sie in den wwwroot Ordner der App eingefügt werden.

Es wird empfohlen, dass Sie gängige Websicherheitsansätze verwenden, wenn Ihre App auf Inhalte externen Ursprungs verweisen muss. So kann der Inhalt am Laden gehindert werden, wenn er kompromittiert wurde:

Auch wenn alle Ressourcen in die App gepackt sind und nicht aus externen Ursprüngen laden, bleiben Sie vorsichtig bei Problemen im Code der Ressource, der innerhalb der Web View ausgeführt wird, da die Ressourcen möglicherweise Anfälligkeiten haben, die cross-site scripting (XSS) Angriffe zulassen könnten.

Im Allgemeinen schützt das Blazor Framework vor XSS, indem es sicher mit HTML umgeht. Jedoch ermöglichen einige Programmiermuster Razor Komponenten das Einfügen von rohem HTML in die gerenderte Ausgabe, wie z. B. das Rendering von Inhalten aus einer nicht vertrauenswürdigen Quelle. Beispielsweise sollte das Rendering von HTML-Inhalten direkt aus einer Datenbank vermieden werden. Darüber hinaus können von der App verwendete JavaScript-Bibliotheken HTML auf unsichere Arten verändern um versehentlich oder absichtlich unsichere Ausgaben zu rendern.

Aus diesen Gründen wird empfohlen, die gleichen Schutzmaßnahmen gegen XSS anzuwenden, welche normalerweise auf Web-Apps angewendet werden. Verhindern Sie das Laden von Skripts aus unbekannten Quellen und implementieren Sie keine potenziell unsicheren JavaScript-Features, wie z. B. eval und andere unsichere JavaScript-Grundtypen. Die Einrichtung eines CSP wird empfohlen um diese Sicherheitsrisiken zu verringern.

Wenn der Code innerhalb der Web View kompromittiert ist, erhält der Code Zugriff auf alle Inhalte innerhalb der Web View und könnte über den Interop-Kanal mit dem Host interagieren. Aus diesem Grund müssen alle Inhalte, die aus dem Web View (Ereignisse, JS-Interop) stammen, als nicht vertrauenswürdig behandelt werden und genauso wie andere vertrauliche Kontexte überprüft werden, z. B. in einer kompromittierten Blazor Server App, die zu böswilligen Angriffen auf das Hostsystem führen kann.

Speichern Sie keine vertraulichen Informationen, wie z. B. Anmeldeinformationen, Sicherheitstoken oder vertrauliche Benutzerdaten, im Kontext des Web View, weil das die Informationen einem Angreifer zur Verfügung stellt, sobald der Web View kompromittiert ist. Es gibt sicherere Alternativen, wie z. B. den Umgang mit vertraulichen Informationen direkt innerhalb des nativen Teils der App.

Externer Inhalt, der in einem iframe gerendert wird

Wenn Sie einen iframe verwenden, um externe Inhalte auf einer Blazor Hybrid-Seite anzuzeigen, sollten Benutzer Sandboxfeatures nutzen, um sicherzustellen, dass der Inhalt von der übergeordneten Seite, welche die App enthält, isoliert ist. Im folgenden Razor-Komponentenbeispiel enthält das <iframe>-Tag das sandbox-Attribut, um Sandboxfeatures auf die admin.html-Seite anzuwenden:

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

Warnung

Das sandbox-Attribut wird in frühen Browserversionen nicht unterstützt. Weitere Informationen finden Sie auf der Can I use-Website zu sandbox.

Standardmäßig werden Links zu URLs außerhalb der App in einer entsprechenden externen App geöffnet und nicht innerhalb der Web View geladen. Es wird nicht empfohlen, das Standardverhalten außer Kraft zu setzen.

Halten Sie den Web View in bereitgestellten Apps aktuell.

Standardmäßig verwendet das BlazorWebView-Steuerelement die aktuell installierte, plattformspezifische native Web View. Da die native Web View regelmäßig mit Unterstützung für neue APIs und Korrekturen für Sicherheitsprobleme aktualisiert wird, müssen Sie möglicherweise sicherstellen, dass eine App eine Web View-Version verwendet, die die Anforderungen der App erfüllt.

Verwenden Sie einen der folgenden Ansätze, um die aktuelle Web View in bereitgestellten Apps beizubehalten:

  • Auf allen Plattformen: Überprüfen Sie die Web View-Version, und fordern Sie den Benutzer bzw. die Benutzerin auf, alle erforderlichen Schritte auszuführen, um sie zu aktualisieren.
  • Nur unter Windows: Packen Sie eine Web Viewmit fester Version in der App, und verwenden Sie sie anstelle der freigegebenen Web View des Systems.

Android

Die Android-Web View wird über den Google Play Store verteilt und aktualisiert. Überprüfen Sie die Web View-Version, indem Sie die Zeichenfolge User-Agent lesen. Lesen Sie die navigator.userAgent-Eigenschaft der Web View mit JavaScript-Interop, und speichern Sie optional den Wert mithilfe eines Singleton-Diensts zwischen, wenn die Benutzer-Agent-Zeichenfolge außerhalb eines Razor-Komponentenkontexts erforderlich ist.

Bei Verwendung des Android-Emulators:

  • Verwenden Sie ein emuliertes Gerät, auf dem Google Play Services vorinstalliert ist. Emulierte Geräte ohne vorinstallierte Google Play-Dienste werden nicht unterstützt.
  • Installieren Sie Google Chrome aus dem Google Play Store. Wenn Google Chrome bereits installiert ist, aktualisieren Sie Chrome aus dem Google Play Store. Wenn auf einem emulierten Gerät nicht die neueste Version von Chrome installiert ist, ist möglicherweise nicht die neueste Version von Android Web View installiert.

iOS/Mac Catalyst

iOS und Mac Catalyst verwenden beide WKWebView, ein Safari-basiertes Steuerelement, das vom Betriebssystem aktualisiert wird. Wie bei Android bestimmen Sie die Web View-Version, indem Sie die Zeichenfolge User-Agent der Web View lesen.

Windows (.NET MAUI, WPF, Windows Forms)

Unter Windows ist die Chromium-basierte Microsoft Edge-WebView2 erforderlich, um Blazor-Web-Apps auszuführen.

Standardmäßig wird die neueste installierte Version von WebView2 (bekannt als Evergreen distribution) verwendet. Wenn Sie eine bestimmte Version von WebView2 mit der App versenden möchten, verwenden Sie Fixed Version distribution.

Weitere Informationen zum Überprüfen der aktuell installierten WebView2-Version und der Verteilungsmodi finden Sie in der Dokumentation zur WebView2-Verteilung.

Zusätzliche Ressourcen