Compartir vía


Desarrollo de aplicaciones WebView2 seguras

El control WebView2 permite a los desarrolladores hospedar contenido web en las aplicaciones nativas. Cuando se usa correctamente, hospedar contenido web ofrece varias ventajas, como el uso de la interfaz de usuario basada en web, el acceso a características de la plataforma web, el uso compartido de código entre plataformas, etc. Para evitar vulnerabilidades que pueden surgir al hospedar contenido web, asegúrese de diseñar la aplicación WebView2 para supervisar estrechamente las interacciones entre el contenido web y la aplicación host.

  • Trate todo el contenido web como inseguro:

    • Valide los mensajes web y los parámetros de objetos de host antes de consumirlos, ya que los mensajes web y los parámetros pueden tener un formato incorrecto (de forma involuntaria o malintencionada) y pueden hacer que la aplicación se comporte de forma inesperada.

    • Compruebe siempre el origen del documento que se ejecuta dentro de WebView2 y evalúe la confiabilidad del contenido.

  • Diseñe mensajes web específicos e interacciones de objetos de host, en lugar de usar servidores proxy genéricos.

  • Establezca las siguientes opciones para restringir la funcionalidad de contenido web mediante la modificación de ICoreWebView2Settings (Win32) o CoreWebView2Settings (.NET):

    • falseEstablezca en AreHostObjectsAllowed , si no espera que el contenido web tenga acceso a objetos host.

    • falseEstablezca en IsWebMessageEnabled , si no espera que el contenido web publique mensajes web en la aplicación nativa.

    • falseEstablezca en IsScriptEnabled , si no espera que el contenido web ejecute scripts (por ejemplo, al mostrar contenido HTML estático).

    • Establezca en AreDefaultScriptDialogsEnabled , si no espera que se muestre alert el contenido web o prompt los diálogos.false

  • Actualice la configuración en función del origen de la nueva página:

    • Para evitar que la aplicación navegue a determinadas páginas, use los eventos y FrameNavigationStarting para comprobar la NavigationStarting navegació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 en ICoreWebView2Settings (Win32) o CoreWebView2Settings (.NET), como se describió anteriormente.

  • 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. Esta restricción bloquea escenarios como la creación de un proveedor de credenciales.