Protegiendo datos confidenciales en segundo plano {Xamarin.Forms}


Tres aplicaciones para mantener a salvo la privacidad en tu móvil

Introducción

Las aplicaciones móviles se han convertido en nuestro pan de cada día; es la herramienta necesaria (incluso imprescindible) para poder desarrollar nuestra vida digital. Todo lo hacemos a través de las apps: gestionamos nuestras cuentas bancarias, escuchamos música, nos informamos, leemos las noticias, compartimos en redes sociales.

Sabemos que hacemos uso de cada una por comodidad, pero cada vez que instalamos alguna nueva, ¿somos conscientes de los permisos que le otorgaremos?, es decir, ¿conocemos el nivel de seguridad de alguna aplicación?

Me imagino que la respuesta de todos es un rotundo NO, y es que lo que sí sabemos, es que comodidad y seguridad son términos antagónicos: cuanto mayor es una, menor es la otra y viceversa.

Privacidad por Defecto

El concepto de privacidad por defecto se traduce en que una aplicación, software o sistema desde el momento en que se crea debe tomar medidas para proteger la información de los usuarios, como la seguridad de los datos.

Para esto ya existen metodologías que revisan desde el mismo código de la aplicación y que dan pautas para la seguridad entre ellas el cifrado de datos, protocolos SSL-TLS, pruebas de vulnerabilidades, auditorias, mecanismos de autenticación, almacenamiento, etc.

Solo algunas…

Determinadas aplicaciones han mejorado con respecto a la seguridad que le ofrecen a los usuarios, tales como en PayPal, WhatsApp y claro esta, todas las aplicaciones bancarias. Si prestamos atención a alguna de las anteriores, podemos ver que cuentan con una función para proteger la información privada/confidencial en segundo plano, pero, ¿cómo lo hacen? la respuesta es super sencilla, así que veamos cómo podemos hacerlo en nuestras aplicaciones de Xamarin.Forms

Comencemos en iOS

Para hacer esto en los dispositivos de la manzana, debemos ir al archivo AppDelegate.cs e ingresar los siguientes métodos:

OnResignActivation – El cual  sirve para bloquear el contenido

OnActivated – El cual nos permite desbloquear el contenido

using UIKit;
using Foundation;
using System.Linq;

namespace SensitiveData.iOS
{
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {

        public override void OnResignActivation(UIApplication application)
        {
            var blurEffect = UIBlurEffect.FromStyle(UIBlurEffectStyle.ExtraDark);
            var blurEffectView = new UIVisualEffectView(blurEffect)
            {
                Frame = application.KeyWindow.Subviews.First().Bounds,
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions,
                Tag = 12
            };
            application.KeyWindow.Subviews.Last().AddSubview(blurEffectView);
            base.OnResignActivation(application);
        }

        public override void OnActivated(UIApplication uiApplication)
        {
            var sub = uiApplication.KeyWindow?.Subviews.Last();
            if (sub == null)
                return;
            foreach (var vv in sub.Subviews)
            {
                if (vv.Tag == 12)
                    vv.RemoveFromSuperview();
            }
            base.OnActivated(uiApplication);
        }

        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App());

            return base.FinishedLaunching(app, options);
        }
    }
}

Ahora para Android necesitamos ir a MainActivity.cs y hacer prácticamente lo mismo, pero esto en los métodos OnPause y OnResume:

 protected override void OnResume()
        {
            Window.ClearFlags(WindowManagerFlags.Secure);
            base.OnResume();
        }
        protected override void OnPause()
        {
            Window.SetFlags(WindowManagerFlags.Secure, WindowManagerFlags.Secure);
            base.OnPause();
        }

Resultado

SensitiveDataiOS SensitiveDataiAndroid

Resumen

Lo que nos debe quedar claro es que, si queremos proteger nuestra privacidad y que nuestros datos estén seguros (o menos expuestos), deberemos, además de revisar uno a uno los permisos de cada aplicación, sacrificar un poquito esa comodidad y realizar un par o tres más de clics en vez de dejar todas las configuraciones tal y como a los desarrolladores de esas apps les gustaría que estuvieran: accesibles al cien por cien.

Descarga el código completo desde mi GitHub.

¡Happy Coding!

Deja un comentario