Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
WebView2 ermöglicht Entwicklern das Hosten von Webinhalten in den nativen Anwendungen. Bei richtiger Verwendung bietet das Hosten von Webinhalten mehrere Vorteile, z. B. die Verwendung der webbasierten Benutzeroberfläche, den Zugriff auf Funktionen der Webplattform oder die plattformübergreifende gemeinsame Nutzung von Code.
In einem Webbrowser werden Websites in einer Sandkastenumgebung eingeschränkte Befugnisse eingeräumt. Wenn Webinhalte jedoch in einer nativen Anwendung gehostet werden, können die Webinhalte auf die Ressourcen und APIs der nativen Anwendung zugreifen. Dies kann zu Sicherheitsrisiken führen, wenn der Webinhalt nicht ordnungsgemäß von der Hostanwendung isoliert ist. Um diese Sicherheitsanfälligkeiten zu vermeiden, befolgen Sie die folgenden Methoden, um die Sicherheit Ihrer WebView2-Anwendung zu verbessern.
Alle Webinhalte als unsicher behandeln
Überprüfen Sie immer die Herkunft des Dokuments, das in WebView2 ausgeführt wird, und bewerten Sie die Vertrauenswürdigkeit des Inhalts, insbesondere bevor Sie ,
PostWebMessageAsJsonPostWebMessageAsString, oder eine andere Methode verwendenExecuteScript, um Informationen an das WebView2-Steuerelement zu senden. Möglicherweise ist das WebView2-Steuerelement über den Endbenutzer, der mit der Seite interagiert, oder über das Skript auf der Seite, die die Navigation verursacht, zu einer anderen Seite navigiert. Der Ursprung des Dokuments kann aus derSourceEigenschaft des WebView2-Steuerelements abgeleitet werden.Seien Sie vorsichtig mit
AddScriptToExecuteOnDocumentCreated. Alle zukünftigennavigationsSkripts führen dasselbe Skript aus, und wenn dieses Skript Zugriff auf Informationen bietet, die nur für einen bestimmten Ursprung vorgesehen sind, kann jedes HTML-Dokument Zugriff auf die Ressourcen und APIs der nativen Anwendung haben.Überprüfen Sie Webnachrichten und Hostobjektparameter vor ihrer Nutzung, da Webnachrichten und Parameter falsch formatiert sein können (unbeabsichtigt oder böswillig) und zu unerwartetem Verhalten der App führen können.
Überprüfen Sie beim Überprüfen des Ergebnisses eines
ExecuteScriptMethodenaufrufs, bei dem es sich um einWebMessageReceivedEreignis handelt, immer dieSourceEigenschaft des WebView2-Steuerelements, um die Quelle des Absenders zu überprüfen, oder überprüfen Sie einen anderen Mechanismus zum Empfangen von Informationen aus einem HTML-Dokument in einem WebView2-Steuerelement, um zu überprüfen, ob die URI des HTML-Dokuments Ihren Erwartungen entspricht.
Vermeiden Sie generische Proxys
Entwerfen Sie spezifische Webnachrichten und Hostobjektinteraktionen, anstatt generische Proxys zu verwenden.
Zum Senden von Nachrichten verwenden PostWebMessageAsJson
Verwenden Sie die PostWebMessageAsJson Methode, um Nachrichten an das WebView2-Steuerelement zu senden. Wenn Sie eine Nachricht erstellen, die an ein WebView2-Steuerelement gesendet werden soll, bevorzugen Sie die Verwendung PostWebMessageAsJson und erstellen Sie den JSON-Zeichenfolgenparameter mithilfe einer JSON-Bibliothek. Dadurch werden potenzielle Unfälle beim Codieren von Informationen in eine JSON-Zeichenfolge oder ein JSON-Skript vermieden und sichergestellt, dass keine vom Angreifer gesteuerte Eingabe den Rest der JSON-Nachricht ändern oder beliebigen JavaScript-Code ausführen kann.
Einschränken der Webinhaltsfunktionalität
Schränken Sie die Funktionalität von Webinhalten ein, wenn sie nicht benötigt wird. Aktualisieren Sie die WebView2-Eigenschaften CoreWebView2Settings , um die Funktionalität der Webinhalte wie folgt einzuschränken:
Legen Sie diese Option
AreHostObjectsAllowedauffalsefest, wenn Sie nicht erwarten, dass der Webinhalt auf Hostobjekte zugreift.Legen Sie diese Option
IsWebMessageEnabledauffalsefest, wenn Sie nicht erwarten, dass der Webinhalt Webnachrichten an Ihre native Anwendung sendet.Legen Sie diese Option auf
IsScriptEnabledfalsefest, wenn Sie nicht erwarten, dass der Webinhalt Skripts ausführt (z. B. wenn statische HTML-Inhalte angezeigt werden).Legen Sie diese Option
AreDefaultScriptDialogsEnabledauffalsefest, wenn Sie nicht erwarten, dass der Webinhalt oderpromptDialogfelder angezeigt werdenalert.
Aktualisieren von Einstellungen basierend auf dem Ursprung der neuen Seite
Aktualisieren Sie die Einstellungen basierend auf dem Ursprung der neuen Seite wie folgt:
Um zu verhindern, dass Ihre Anwendung zu bestimmten Seiten navigiert, verwenden Sie die
NavigationStartingUND-EreignisseFrameNavigationStarting, um die Seiten- oder Framenavigation zu überprüfen, und blockieren Sie dann bedingt die Navigation.Wenn Sie zu einer neuen Seite navigieren, müssen Sie möglicherweise die Eigenschaftswerte des
CoreWebView2SettingsObjekts an die Sicherheitsanforderungen der neuen Seite anpassen, wie unter Einschränken der Webinhaltsfunktionalität weiter oben beschrieben.
Entfernen von verfügbar gemachten Hostobjekten
Wenn Sie zu einem neuen Dokument navigieren, verwenden Sie das ContentLoading Ereignis und RemoveHostObjectFromScript um verfügbar gemachte Hostobjekte zu entfernen.
WebView2 kann nicht als Systembenutzer ausgeführt werden
WebView2 kann nicht als Systembenutzer ausgeführt werden. Diese Einschränkung blockiert Szenarien wie das Erstellen eines Anmeldeinformationsanbieters.
Empfohlene Berechtigungsstufe für WebView2-Hostanwendungen
Als bewährte Sicherheitsmethode empfehlen wir, WebView2 in einem Prozess zu hosten, der mit standardmäßiger Benutzerintegrität (ohne erhöhte Rechte) ausgeführt wird. Gemäß dem Prinzip der geringsten Rechte sollten Anwendungen es vermeiden, die WebView2-Hostingkomponente mit erhöhten (Administrator-)Rechten auszuführen.
Wenn Ihre Anwendung für bestimmte Vorgänge erhöhte Berechtigungen erfordert, wird empfohlen, diese Arbeit in einem separaten, dedizierten Prozess zu isolieren und die WebView2-Hostkomponente ohne erhöhte Rechte zu halten. Dadurch bleibt die Browser-Hostingoberfläche auf der niedrigsten Berechtigungsstufe und entspricht den empfohlenen Sicherheitspraktiken für Windows-Anwendungen.
Verwenden Sie für eine Host-App mit erhöhten Rechten geeignete Überschreibungsflags.
Verwenden Sie für einen WebView2-Host-App-Prozess mit erhöhten Rechten den entsprechenden Typ von Override-Flags. Ein Prozess mit erhöhten Rechten ist ein Prozess mit hoher Integritätsebene (High Integrity Level, hoher IL). Um Prozesse mit erhöhten Rechten vor Konfigurationen zu schützen, die von Standardbenutzern geändert werden können, ignoriert WebView2 bestimmte benutzerbezogene Außerkraftsetzungsmechanismen, wenn der Hostprozess mit erhöhten Rechten ausgeführt wird.
Wenn der Hostprozess mit erhöhten Rechten ausgeführt wird:
WEBVIEW2_*Umgebungsvariablenüberschreibungen (Flags) werden ignoriert, einschließlichWEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS. Siehe:- Festlegen von Browserflags in Ihrer lokalen Geräteumgebung in WebView2-Browserflags.
Konfigurationsflags, die innerhalb der WebView2-App über die WebView2-API angegeben werden, werden berücksichtigt. Siehe:
- Programmgesteuertes Festlegen von Browserflags durch Code in WebView2-Browserflags.
HKEY_CURRENT_USER(HKCU) Richtlinienüberschreibungen werden ignoriert. Siehe:-
Ändern der Kanalsuchreihenfolge (empfohlen) in Wechseln zu einem Vorschaukanal zum Testen anstehender APIs und Features – Wählen Sie die Registerkarte Registrierungsschlüssel und dann Suchen aus
HKCU. -
ChannelSearchKindSo stellen Sie sicher, dass ein bestimmter Kanal in Wechseln Sie zu einem Vorschaukanal, um anstehende APIs und Features zu testen – Wählen Sie die Registerkarte "Registrierungsschlüssel" und dann "Suchen "HKCUaus. -
Festlegen des ausführbaren Browser-Ordners (für lokale Tests) in Wechseln zu einem Vorschaukanal zum Testen anstehender APIs und Features – Wählen Sie die Registerkarte "Registrierungsschlüssel" und dann "Suchen
HKCU" aus. -
Debuggen von WebView2-Apps mit Visual Studio Code – Find
HKEY_CURRENT_USER.
-
Ändern der Kanalsuchreihenfolge (empfohlen) in Wechseln zu einem Vorschaukanal zum Testen anstehender APIs und Features – Wählen Sie die Registerkarte Registrierungsschlüssel und dann Suchen aus
AdditionalBrowserArgumentsRegistrierungsüberschreibungen, die sich unterHKCUbefinden, werden ignoriert.HKEY_LOCAL_MACHINE(HKLM) Richtlinienüberschreibungen werden berücksichtigt. Siehe:-
Ändern der Kanalsuchreihenfolge (empfohlen) in Wechseln zu einem Vorschaukanal zum Testen anstehender APIs und Features – Wählen Sie die Registerkarte Registrierungsschlüssel und dann Suchen aus
HKLM. -
ChannelSearchKindSo stellen Sie sicher, dass ein bestimmter Kanal in Wechseln Sie zu einem Vorschaukanal, um anstehende APIs und Features zu testen – Wählen Sie die Registerkarte "Registrierungsschlüssel" und dann "Suchen "HKLMaus. -
Festlegen des ausführbaren Browser-Ordners (für lokale Tests) in Wechseln zu einem Vorschaukanal zum Testen anstehender APIs und Features – Wählen Sie die Registerkarte "Registrierungsschlüssel" und dann "Suchen
HKLM" aus.
-
Ändern der Kanalsuchreihenfolge (empfohlen) in Wechseln zu einem Vorschaukanal zum Testen anstehender APIs und Features – Wählen Sie die Registerkarte Registrierungsschlüssel und dann Suchen aus
WebView2-Apps ohne erhöhte Rechte berücksichtigen alle unterstützten Außerkraftsetzungsmechanismen.
Siehe auch:
- Verteilen Ihrer App und der WebView2-Runtime – Suchen Sie nach "erhöhte Rechte".
Siehe auch
Dokumentation für Microsoft Edge Enterprise: