Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
WebView2 permite a los desarrolladores hospedar contenido web en las aplicaciones nativas. Cuando se usa correctamente, el hospedaje de contenido web ofrece varias ventajas, como el uso de la interfaz de usuario basada en la web, el acceso a características de la plataforma web o el uso compartido del código entre plataformas.
En un explorador web, a los sitios web se les conceden poderes limitados en un entorno de espacio aislado. Sin embargo, al hospedar contenido web en una aplicación nativa, el contenido web puede acceder a los recursos y API de la aplicación nativa. Esto puede dar lugar a vulnerabilidades de seguridad si el contenido web no se aísla correctamente de la aplicación host. Para evitar estas vulnerabilidades, siga las prácticas siguientes para mejorar la seguridad de la aplicación WebView2.
Tratar todo el contenido web como inseguro
Compruebe siempre el origen del documento que se ejecuta dentro de WebView2 y evalúe la confiabilidad del contenido, especialmente antes de usar
ExecuteScript,PostWebMessageAsJson,PostWebMessageAsString, o cualquier otro método para enviar información al control WebView2. Es posible que el control WebView2 haya navegado a otra página a través del usuario final interactuando con la página o el script de la página que causa la navegación. El origen del documento se puede obtener a partir de laSourcepropiedad del control WebView2.Ten cuidado con
AddScriptToExecuteOnDocumentCreated.navigationsTodos ejecutan en el futuro el mismo script, y si ese script proporciona acceso a información destinada solo a un origen determinado, cualquier documento HTML puede tener acceso a los recursos y API de la aplicación nativa.Valide los mensajes web y los parámetros de objeto host antes de consumirlos, ya que los mensajes web y los parámetros pueden tener un formato incorrecto (involuntario o malintencionado) y pueden hacer que la aplicación se comporte de forma inesperada.
Al examinar el resultado de una
ExecuteScriptllamada a método, que es unWebMessageReceivedevento, compruebe siempre laSourcepropiedad del control WebView2 para comprobar el origen del remitente, o compruebe cualquier otro mecanismo de recepción de información de un documento HTML en un control WebView2, para validar que el URI del documento HTML es el que espera.
Evite los proxies genéricos
Diseñe mensajes web específicos e interacciones de objetos host, en lugar de usar proxies genéricos.
Se usa PostWebMessageAsJson para enviar mensajes
Use el PostWebMessageAsJson método para enviar mensajes al control WebView2. Al crear un mensaje para enviarlo a un control WebView2, prefiera usar PostWebMessageAsJson y construir el parámetro de cadena JSON mediante una biblioteca JSON. Esto evita posibles accidentes al codificar información en una cadena o script JSON, y garantiza que ninguna entrada controlada por un atacante pueda modificar el resto del mensaje JSON o ejecutar código JavaScript arbitrario.
Restringir la funcionalidad de contenido web
Restrinja la funcionalidad del contenido web, si no es necesario. Actualice las propiedades WebView2 para restringir la funcionalidad del contenido web, como CoreWebView2Settings se indica a continuación:
Establézcalo
AreHostObjectsAllowedenfalse, si no espera que el contenido web tenga acceso a los objetos host.Establézcalo
IsWebMessageEnabledenfalse, si no espera que el contenido web publique mensajes web en su aplicación nativa.Establézcalo
IsScriptEnabledenfalse, si no espera que el contenido web ejecute scripts (por ejemplo, al mostrar contenido HTML estático).Establézcalo
AreDefaultScriptDialogsEnabledenfalse, si no espera que se muestrealertel contenido web opromptlos cuadros de diálogo.
Actualizar la configuración en función del origen de la nueva página
Actualice la configuración en función del origen de la nueva página, de la siguiente manera:
Para impedir que la aplicación navegue a determinadas páginas, use los eventos and
FrameNavigationStartingpara comprobar laNavigationStartingnavegación de páginas o marcos y, a continuación, bloquee condicionalmente la navegación.Al navegar a una página nueva, es posible que tenga que ajustar los valores de propiedad del
CoreWebView2Settingsobjeto para que coincidan con los requisitos de seguridad de la nueva página, como se describe en Restringir la funcionalidad de contenido web, más arriba.
Quitar objetos de host expuestos
Al navegar a un documento nuevo, use el evento y RemoveHostObjectFromScript quite los ContentLoading objetos host expuestos.
WebView2 no se puede ejecutar como usuario del sistema
WebView2 no se puede ejecutar como un usuario del sistema. Esta restricción bloquea escenarios como la creación de un proveedor de credenciales.
Nivel de privilegio recomendado para aplicaciones de host WebView2
Como práctica recomendada de seguridad, se recomienda hospedar WebView2 en un proceso que se ejecute con la integridad de usuario estándar (no elevada). Siguiendo el principio de privilegios mínimos, las aplicaciones deben evitar ejecutar el componente de hospedaje WebView2 con privilegios elevados (administrador).
Si la aplicación requiere privilegios elevados para determinadas operaciones, se recomienda aislar ese trabajo en un proceso dedicado independiente y mantener el componente de host WebView2 deselevado. De este modo, la superficie de hospedaje del explorador se mantiene en el nivel de privilegios más bajo necesario y se ajusta a las prácticas de seguridad de aplicaciones de Windows recomendadas.
Para una aplicación host con privilegios elevados, use las marcas de reemplazo adecuadas
Para un proceso de aplicación de host WebView2 con privilegios elevados, use el tipo adecuado de marcas de invalidación. Un proceso con privilegios elevados es un proceso de nivel de integridad alto (IL alto). Para ayudar a proteger los procesos con privilegios elevados de configuraciones que pueden ser modificadas por usuarios estándar, WebView2 omite determinados mecanismos de invalidación de ámbito de usuario cuando se ejecuta un proceso de host con privilegios elevados.
Cuando se ejecuta el proceso de host con privilegios elevados:
WEBVIEW2_*Se omiten las invalidaciones de variables de entorno (marcas), incluidasWEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS. Vea:- Configuración de marcas del explorador en el entorno del dispositivo local en las marcas del explorador WebView2.
Se respetan las marcas de configuración que se especifican en la aplicación WebView2 a través de la API WebView2. Vea:
- Configuración de las marcas del explorador mediante programación mediante código en las marcas del explorador WebView2.
HKEY_CURRENT_USER(HKCU) se omiten las invalidaciones de directiva. Vea:-
Cambiar el orden de búsqueda del canal (recomendado) en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, Buscar
HKCU. -
Cómo asegurarse
ChannelSearchKindde que se usa un canal determinado en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, BuscarHKCU. -
La configuración de la carpeta ejecutable del explorador (para pruebas locales) en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, Buscar
HKCUarchivo -
Depurar aplicaciones WebView2 con Visual Studio Code - Find
HKEY_CURRENT_USER.
-
Cambiar el orden de búsqueda del canal (recomendado) en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, Buscar
AdditionalBrowserArgumentsLas invalidaciones del Registro que se encuentran enHKCUse omiten.HKEY_LOCAL_MACHINE(HKLM) se respetan las invalidaciones de directiva. Vea:-
Cambiar el orden de búsqueda del canal (recomendado) en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, Buscar
HKLM. -
Cómo asegurarse
ChannelSearchKindde que se usa un canal determinado en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, BuscarHKLM. -
La configuración de la carpeta ejecutable del explorador (para pruebas locales) en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, Buscar
HKLMarchivo
-
Cambiar el orden de búsqueda del canal (recomendado) en Cambiar a un canal de versión preliminar para probar las próximas API y características : seleccione la pestaña Clave del Registro y, a continuación, Buscar
Las aplicaciones WebView2 sin privilegios elevados respetan todos los mecanismos de invalidación admitidos.
Vea también:
Vea también
Documentación de Microsoft Edge Enterprise: