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.