Protege las actividades sensibles

En este documento, se detallan las formas de supervisar actividades sensibles, como los accesos de usuarios y las compras en línea.

FLAG_SECURE

FLAG_SECURE es un parámetro de ventana que le indica a Android que no permita capturas de pantalla ni que muestre la vista de la ventana en una pantalla no segura (como la transmisión de pantalla). Esto es útil para las aplicaciones que necesitan proteger información sensible, como las aplicaciones bancarias o los administradores de contraseñas. Cuando una ventana se marca con FLAG_SECURE, Android impide que se tomen capturas de pantalla y que la ventana se muestre en una pantalla no segura, como una TV o un proyector. Esto ayuda a proteger la información que se muestra en la ventana para que no accedan a ella personas no autorizadas.

Cómo ayuda a mitigar el fraude

Una app o entidad maliciosa podría recuperar capturas de pantalla en segundo plano. Cuando el estado de tu app cambia a segundo plano, se puede usar FLAG_SECURE. Cuando se toma la captura de pantalla, la imagen resultante está en blanco.

FLAG_SECURE también ayuda con los casos de uso de compartir pantalla de forma remota. No siempre es una app maliciosa la que recupera capturas de pantalla. También se suelen encontrar apps legítimas para compartir pantalla en situaciones fraudulentas.

Implementación

Para las vistas con la información que deseas proteger, agrega lo siguiente:

Kotlin

window?.setFlags(
    WindowManager.LayoutParams.FLAG_SECURE,
    WindowManager.LayoutParams.FLAG_SECURE
)

Java

window.setFlags(
  WindowManager.LayoutParams.FLAG_SECURE,
  WindowManager.LayoutParams.FLAG_SECURE
);

Prácticas recomendadas

Es importante tener en cuenta que este enfoque no es confiable para evitar ataques de superposición. En algunos casos, no predice correctamente si la grabación de pantalla está activa, pero abarca la mayoría de los casos de uso. Para mitigar los ataques de superposición, lee la siguiente sección sobre los permisos de HIDE_OVERLAY_WINDOWS.

HIDE_OVERLAY_WINDOWS

HIDE_OVERLAY_WINDOWS es un permiso que se agregó en Android 12, con el que tu app puede inhabilitar la opción de que se dibujen superposiciones de aplicaciones sobre ella. En Android 12, dificultamos la adquisición del permiso SYSTEM_ALERT_WINDOW, lo que permite que tu app bloquee las superposiciones de apps de terceros.

Cómo ayuda a mitigar el fraude

Cuando habilitas el permiso HIDE_OVERLAY_WINDOWS, inhabilitas la opción de que se dibujen superposiciones de aplicaciones sobre tu app. Este permiso proporciona un mecanismo de protección contra ataques de capa y daga.

Implementación

Para habilitar este permiso, agrega HIDE_OVERLAY_WINDOWS al manifiesto de tu proyecto.

Prácticas recomendadas

Al igual que con cualquier permiso, debes confiar en cualquier app de superposición al menos tanto como confías en cualquier otra app del dispositivo. En otras palabras, tu app no debería permitir que otras apps dibujen superposiciones sobre ella, a menos que sepas que la otra app es confiable. Permitir que una app se muestre sobre otras apps puede ser peligroso porque puede robar contraseñas o leer mensajes.