Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O WebView2 permite que os desenvolvedores hospedem conteúdo da Web nos aplicativos nativos. Quando usado corretamente, hospedar conteúdo da web oferece várias vantagens, como usar a interface do usuário baseada na web, acessar recursos da plataforma da web ou compartilhar código entre plataformas.
Em um navegador da Web, os sites recebem poderes limitados em um ambiente de área restrita. No entanto, ao hospedar conteúdo da Web em um aplicativo nativo, o conteúdo da Web pode acessar os recursos e APIs do aplicativo nativo. Isso pode levar a vulnerabilidades de segurança se o conteúdo da Web não for isolado corretamente do aplicativo host. Para evitar essas vulnerabilidades, siga as práticas abaixo para melhorar a segurança do seu aplicativo WebView2.
Trate todo o conteúdo da Web como inseguro
Sempre marque a origem do documento que está sendo executado dentro do WebView2 e avalie a confiabilidade do conteúdo, especialmente antes de usar
ExecuteScript,PostWebMessageAsJson,PostWebMessageAsString, ou qualquer outro método para enviar informações para o controle WebView2. O controle WebView2 pode ter navegado para outra página por meio do usuário final interagindo com a página ou script na página que causa a navegação. A origem do documento pode ser obtida daSourcepropriedade do controle WebView2.Tenha cuidado com
AddScriptToExecuteOnDocumentCreated. Todos os futurosnavigationsexecutarão o mesmo script e, se esse script fornecer acesso a informações destinadas apenas a uma determinada origem, qualquer documento HTML poderá ter acesso aos recursos e APIs do aplicativo nativo.Valide mensagens da Web e parâmetros do objeto host antes de consumi-los, pois mensagens e parâmetros da Web podem ser malformados (involuntariamente ou maliciosamente) e podem fazer com que o aplicativo se comporte de maneira inesperada.
Ao examinar o resultado de uma
ExecuteScriptchamada de método, que é umWebMessageReceivedevento, sempre marque aSourcepropriedade do controle WebView2 para marcar a origem do remetente ou marque qualquer outro mecanismo de recebimento de informações de um documento HTML em um controle WebView2, para validar que o URI do documento HTML é o que você espera.
Evite proxies genéricos
Crie mensagens da Web específicas e interações com objetos host, em vez de usar proxies genéricos.
Use PostWebMessageAsJson para enviar mensagens
Use o PostWebMessageAsJson método para enviar mensagens para o controle WebView2. Ao construir uma mensagem para enviar para um controle WebView2, prefira usar PostWebMessageAsJson e construir o parâmetro de cadeia de caracteres JSON usando uma biblioteca JSON. Isso evita possíveis acidentes de codificação de informações em uma cadeia de caracteres ou script JSON e garante que nenhuma entrada controlada pelo invasor possa modificar o restante da mensagem JSON ou executar código JavaScript arbitrário.
Restringir a funcionalidade do conteúdo da Web
Restrinja a funcionalidade do conteúdo da Web, se ela não for necessária. Atualize as propriedades do WebView2 para CoreWebView2Settings restringir a funcionalidade do conteúdo da Web, da seguinte maneira:
Defina
AreHostObjectsAllowedcomofalse, se você não espera que o conteúdo da Web acesse objetos host.Defina
IsWebMessageEnabledcomofalse, se você não espera que o conteúdo da Web poste mensagens da Web em seu aplicativo nativo.Defina
IsScriptEnabledcomofalse, se você não espera que o conteúdo da Web execute scripts (por exemplo, ao mostrar conteúdo HTML estático).Defina
AreDefaultScriptDialogsEnabledcomofalse, se você não espera que o conteúdo da Web seja exibidoalertoupromptas caixas de diálogo.
Atualizar configurações com base na origem da nova página
Atualize as configurações com base na origem da nova página, da seguinte maneira:
Para impedir que seu aplicativo navegue para determinadas páginas, use os eventos and
FrameNavigationStartingpara marcar aNavigationStartingnavegação de página ou quadro e, em seguida, bloqueie a navegação condicionalmente.Ao navegar para uma nova página, talvez seja necessário ajustar os valores de propriedade no
CoreWebView2Settingsobjeto para corresponder aos requisitos de segurança da nova página, conforme descrito em Restringir a funcionalidade de conteúdo da Web acima.
Remover objetos hospedeiros expostos
Ao navegar para um novo documento, use o ContentLoading evento e RemoveHostObjectFromScript remova objetos host expostos.
O WebView2 não pode ser executado como um usuário do sistema
O WebView2 não pode ser executado como um usuário do sistema. Essa restrição bloqueia cenários como a criação de um provedor de credenciais.