Entwickeln sicherer WebView2-Apps

Mit dem WebView2-Steuerelement können Entwickler Webinhalte in den nativen Anwendungen hosten. Bei richtiger Verwendung bietet das Hosten von Webinhalten mehrere Vorteile, z. B. die Verwendung einer webbasierten Benutzeroberfläche, den Zugriff auf Features der Webplattform, die plattformübergreifende Freigabe von Code usw. Um Sicherheitsrisiken zu vermeiden, die beim Hosten von Webinhalten auftreten können, stellen Sie sicher, dass Ihre WebView2-Anwendung so entworfen wird, dass Interaktionen zwischen dem Webinhalt und der Hostanwendung genau überwacht werden.

  • Behandeln Sie alle Webinhalte als unsicher:

    • Überprüfen Sie Webnachrichten und Hostobjektparameter, bevor Sie sie verwenden, da Webnachrichten und Parameter (unbeabsichtigt oder böswillig) falsch formatiert sein können und dazu führen können, dass sich die App unerwartet verhält.

    • Überprüfen Sie immer den Ursprung des Dokuments, das in WebView2 ausgeführt wird, und bewerten Sie die Vertrauenswürdigkeit des Inhalts.

  • Entwerfen Sie bestimmte Webnachrichten und Hostobjektinteraktionen, anstatt generische Proxys zu verwenden.

  • Legen Sie die folgenden Optionen fest, um die Webinhaltsfunktionalität einzuschränken, indem Sie ICoreWebView2Settings (Win32) oder CoreWebView2Settings (.NET) ändern:

    • Legen Sie auf fest AreHostObjectsAllowedfalse, wenn Sie nicht erwarten, dass der Webinhalt auf Hostobjekte zugreift.

    • Legen Sie auf falsefestIsWebMessageEnabled, wenn Sie nicht erwarten, dass der Webinhalt Webnachrichten in Ihrer nativen Anwendung veröffentlicht.

    • Legen Sie auf fest IsScriptEnabledfalse, wenn Sie nicht erwarten, dass vom Webinhalt Skripts ausgeführt werden (z. B. beim Anzeigen von statischem HTML-Inhalt).

    • Legen Sie auf fest AreDefaultScriptDialogsEnabledfalse, wenn Sie nicht erwarten, dass der Webinhalt oder prompt Dialogfelder angezeigt werdenalert.

  • Aktualisieren Sie die Einstellungen basierend auf dem Ursprung der neuen Seite:

    • Um zu verhindern, dass Ihre Anwendung zu bestimmten Seiten navigiert, verwenden Sie die NavigationStarting Ereignisse und FrameNavigationStarting , um die Seiten- oder Framenavigation zu überprüfen, und blockieren Sie dann die Navigation bedingt.

    • Wenn Sie zu einer neuen Seite navigieren, müssen Sie möglicherweise die Eigenschaftswerte für ICoreWebView2Settings (Win32) oder CoreWebView2Settings (.NET) anpassen, wie zuvor beschrieben.

  • Verwenden Sie beim Navigieren zu einem neuen Dokument das ContentLoading -Ereignis und RemoveHostObjectFromScript , um verfügbar gemachte Hostobjekte zu entfernen.

  • WebView2 kann nicht als Systembenutzer ausgeführt werden. Diese Einschränkung blockiert Szenarien wie das Erstellen eines Anmeldeinformationsanbieters.