Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
WebView2 permet aux développeurs d’héberger du contenu Web dans les applications natives. Lorsqu’il est utilisé correctement, l’hébergement de contenu web offre plusieurs avantages, tels que l’utilisation d’une interface utilisateur web, l’accès aux fonctionnalités de la plateforme web ou le partage de code entre plateformes.
Dans un navigateur web, les sites web disposent de pouvoirs limités dans un environnement bac à sable. Toutefois, lors de l’hébergement de contenu web dans une application native, le contenu web peut accéder aux ressources et API de l’application native. Cela peut entraîner des failles de sécurité si le contenu web n’est pas correctement isolé de l’application hôte. Pour éviter ces vulnérabilités, suivez les pratiques ci-dessous pour améliorer la sécurité de votre application WebView2.
Traiter tout le contenu web comme non sécurisé
Vérifiez toujours la case activée l’origine du document en cours d’exécution dans WebView2 et évaluez la fiabilité du contenu, en particulier avant d’utiliser
ExecuteScript,PostWebMessageAsJson,PostWebMessageAsStringou toute autre méthode pour envoyer des informations dans le contrôle WebView2. Le contrôle WebView2 peut avoir navigué vers une autre page via l’utilisateur final interagissant avec la page ou le script de la page à l’origine de la navigation. L’origine du document peut être obtenue à partir de laSourcepropriété du contrôle WebView2.Faites attention avec
AddScriptToExecuteOnDocumentCreated. Tous les futursnavigationsexécutent le même script, et si ce script permet d’accéder à des informations qui ne sont destinées qu’à une certaine origine, n’importe quel document HTML peut avoir accès aux ressources et API de l’application native.Validez les messages web et les paramètres d’objet hôte avant de les utiliser. En effet, les messages web et les paramètres peuvent être d’une forme incorrecte (involontairement ou malveillantement) et provoquer un comportement inattendu de l’application.
Lorsque vous examinez le résultat d’un
ExecuteScriptappel de méthode, qui est unWebMessageReceivedévénement, case activée toujours laSourcepropriété du contrôle WebView2 pour case activée la source de l’expéditeur, ou case activée tout autre mécanisme de réception d’informations d’un document HTML dans un contrôle WebView2, pour valider que l’URI du document HTML correspond à ce que vous attendez.
Éviter les proxys génériques
Concevez des messages web spécifiques et des interactions d’objet hôte, plutôt que d’utiliser des proxys génériques.
Utiliser PostWebMessageAsJson pour envoyer des messages
Utilisez la PostWebMessageAsJson méthode pour envoyer des messages au contrôle WebView2. Lors de la construction d’un message à envoyer dans un contrôle WebView2, privilégiez l’utilisation PostWebMessageAsJson et construisez le paramètre de chaîne JSON à l’aide d’une bibliothèque JSON. Cela évite tout accident potentiel lié au codage d’informations dans une chaîne ou un script JSON et garantit qu’aucune entrée contrôlée par l’attaquant ne peut modifier le reste du message JSON ou exécuter du code JavaScript arbitraire.
Restreindre les fonctionnalités de contenu web
Restreindre la fonctionnalité de contenu web, si elle n’est pas nécessaire. Mettez à jour les propriétés WebView2 pour CoreWebView2Settings restreindre la fonctionnalité du contenu Web, comme suit :
Définissez
AreHostObjectsAllowedla valeur ,falsesi vous ne vous attendez pas à ce que le contenu web accède aux objets hôtes.Définissez
IsWebMessageEnabledla valeurfalsesur , si vous ne vous attendez pas à ce que le contenu web publie des messages web dans votre application native.falseSiIsScriptEnabledvous ne vous attendez pas à ce que le contenu web exécute des scripts (par exemple, lors de l’affichage de contenu HTML statique).Définissez
AreDefaultScriptDialogsEnabledla valeur surfalse, si vous ne vous attendez pas à ce que le contenu web s’affiche oupromptque des dialogues s’affichentalert.
Mettre à jour les paramètres en fonction de l’origine de la nouvelle page
Mettez à jour les paramètres en fonction de l’origine de la nouvelle page, comme suit :
Pour empêcher votre application d’accéder à certaines pages, utilisez les événements et
FrameNavigationStartingpour vérifier la navigation dans les pages ou lesNavigationStartingcadres de case activée, puis bloquez conditionnellement la navigation.Lorsque vous naviguez vers une nouvelle page, vous devrez peut-être ajuster les valeurs de propriété sur l’objet pour qu’elles
CoreWebView2Settingscorrespondent aux exigences de sécurité de la nouvelle page, comme décrit dans Restreindre la fonctionnalité de contenu web, ci-dessus.
Supprimer les objets hôtes exposés
Lorsque vous accédez à un nouveau document, utilisez l’événement pour RemoveHostObjectFromScript supprimer les ContentLoading objets hôtes exposés.
WebView2 ne peut pas être exécuté en tant qu’utilisateur système
WebView2 ne peut pas être exécuté en tant qu’utilisateur système. Cette restriction bloque des scénarios tels que la création d’un fournisseur d’informations d’identification.
Niveau de privilège recommandé pour les applications hôtes WebView2
Comme meilleure pratique de sécurité, nous vous recommandons d’héberger WebView2 dans un processus qui s’exécute avec l’intégrité utilisateur standard (non élevée). En suivant le principe de moindre privilège, les applications doivent éviter d’exécuter le composant d’hébergement WebView2 avec des privilèges (administrateur) élevés.
Si votre application nécessite des privilèges élevés pour certaines opérations, nous vous recommandons d’isoler ce travail dans un processus séparé et dédié et de maintenir le composant hôte WebView2 élevé. Cela maintient la surface d’hébergement du navigateur au niveau de privilège le plus bas nécessaire et s’aligne sur les pratiques de sécurité des applications Windows recommandées.
Pour une application hôte avec élévation de privilèges, utilisez les indicateurs de remplacement appropriés
Pour un processus d’application hôte WebView2 avec élévation de privilèges, utilisez le type d’indicateurs de remplacement approprié. Un processus élevé est un processus à haut niveau d’intégrité (IL) élevé. Pour aider à protéger les processus élevés de la configuration qui peut être modifiée par les utilisateurs standard, WebView2 ignore certains mécanismes de remplacement à l’échelle de l’utilisateur lorsque le processus hôte s’exécute en mode élevé.
Lorsque le processus hôte s’exécute avec élévation de privilèges :
WEBVIEW2_*Les remplacements de variables d’environnement (indicateurs) sont ignorés, notammentWEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS. Voir :- Définition des indicateurs de navigateur dans l’environnement de votre appareil local dans les indicateurs de navigateur WebView2.
Les indicateurs de configuration spécifiés dans l’application WebView2 via l’API WebView2 sont respectés. Voir :
HKEY_CURRENT_USER(HKCU) les substitutions de stratégie sont ignorées. Voir :-
Modification de l’ordre de recherche du canal (recommandé) dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchez
HKCU. -
Comment utiliser
ChannelSearchKindpour s’assurer qu’un canal particulier est utilisé dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchezHKCU. -
Configuration du dossier de l’exécutable du navigateur (pour les tests locaux) dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchez
HKCU. -
Déboguer des applications WebView2 avec Visual Studio Code - Rechercher
HKEY_CURRENT_USER
-
Modification de l’ordre de recherche du canal (recommandé) dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchez
AdditionalBrowserArgumentsLes remplacements de Registre qui sont sousHKCUsont ignorés.HKEY_LOCAL_MACHINE(HKLM) les remplacements de stratégie sont honorés. Voir :-
Modification de l’ordre de recherche du canal (recommandé) dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchez
HKLM. -
Comment utiliser
ChannelSearchKindpour s’assurer qu’un canal particulier est utilisé dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchezHKLM. -
Configuration du dossier de l’exécutable du navigateur (pour les tests locaux) dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchez
HKLM.
-
Modification de l’ordre de recherche du canal (recommandé) dans Basculer vers un canal d’aperçu pour tester les API et fonctionnalités à venir : sélectionnez l’onglet Clé de Registre , puis recherchez
Les applications WebView2 non élevées respectent tous les mécanismes de remplacement pris en charge.
Voir aussi :
- Distribuer votre application et WebView2 Runtime - Recherchez « élevé ».
Voir aussi
Documentation Microsoft Edge Entreprise :