Skip to content

MASTG-BEST-0012: Desativar JavaScript em WebViews

Se o JavaScript não for necessário, desative-o explicitamente em WebViews configurando setJavaScriptEnabled(false).

Habilitar JavaScript em WebViews aumenta a superfície de ataque e pode expor seu aplicativo a riscos de segurança graves, incluindo:

  • Cross-Site Scripting (XSS): JavaScript malicioso pode ser executado dentro da WebView, levando a sequestro de sessão, roubo de credenciais ou adulteração de conteúdo.
  • Exfiltração de Dados: WebViews podem acessar dados sensíveis como cookies, tokens ou arquivos locais (por exemplo, via URIs file:// ou content:// quando setAllowFileAccess(true), setAllowFileAccessFromFileURLs(true) ou setAllowContentAccess(true) estão habilitados), que podem ser exfiltrados por scripts maliciosos se setAllowUniversalAccessFromFileURLs(true) estiver configurado.
  • Acesso Não Autorizado ao Dispositivo: JavaScript pode ser usado em conjunto com addJavascriptInterface para explorar interfaces nativas do Android expostas, levando à execução remota de código (RCE).

Às vezes isso não é possível devido aos requisitos do aplicativo. Nesses casos, certifique-se de ter implementado validação de entrada adequada, codificação de saída e outras medidas de segurança.

Nota: às vezes você pode querer usar alternativas às WebViews regulares, como Trusted Web Activities ou Custom Tabs, que fornecem uma maneira mais segura de exibir conteúdo web em seu aplicativo. Nesses casos, o JavaScript é tratado dentro do ambiente do navegador, que se beneficia das atualizações de segurança mais recentes, sandboxing e mitigações contra vulnerabilidades web comuns, como Cross-Site Scripting (XSS) e ataques Machine-in-the-Middle (MITM).

Tests

MASTG-TEST-0253: Uso em Tempo de Execução de APIs de Acesso a Arquivos Locais em WebViews MASTG-TEST-0251: Uso em Tempo de Execução de APIs de Acesso a Content Provider em WebViews MASTG-TEST-0250: Referências a Content Provider Access em WebViews MASTG-TEST-0252: Referências de Acesso a Arquivos Locais em WebViews