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://oucontent://quandosetAllowFileAccess(true),setAllowFileAccessFromFileURLs(true)ousetAllowContentAccess(true)estão habilitados), que podem ser exfiltrados por scripts maliciosos sesetAllowUniversalAccessFromFileURLs(true)estiver configurado. - Acesso Não Autorizado ao Dispositivo: JavaScript pode ser usado em conjunto com
addJavascriptInterfacepara 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