3. El uso de HTTPS
Este tema ya lo hemos tratado en otros artículos donde hacíamos nuestras conexiones desde la aplicación hacia una web service por medio de Https.
Todas las comunicaciones entre la aplicación y los servidores deben ser a través de una conexión HTTPS, preferentemente utilizando la clase HttpsURLConnection. Si cree que el uso de HTTP para datos está bien, se equivoca.
Muchos usuarios de Android se conectan a varios puntos de acceso Wi-Fi en las zonas comunes abiertas todos los días. Algunos de estos puntos de acceso podrían ser maliciosas. Un punto de acceso malicioso puede modificar fácilmente el contenido de tráfico HTTP para que su aplicación se comporta de una manera inesperada, o, peor aún, inyectar anuncios o explota en ella.
Mediante el uso de HTTPS, siempre y cuando el servidor está configurado con un certificado expedido por una autoridad de certificación de confianza, como DigiCert o GlobalSign, puede estar seguro de que el tráfico de su red es segura tanto contra el espionaje y los ataques man-in-the-middle.
Si su aplicación tiene una gran cantidad de código de red y que tienen miedo de que sin darse cuenta puede ser el envío de algunos datos como texto plano, se debe considerar el uso de nogotofail, una herramienta de código abierto construido por Google para encontrar este tipo de errores.
4. Uso GCM en lugar de SMS
Antes, cuando GCM, abreviatura de Google Cloud Messaging,»Google mensajería en la nube», no existía, muchos desarrolladores estaban usando SMS para enviar datos de sus servidores para sus aplicaciones. Hoy en día, esta práctica ha desaparecido en gran parte.
Si usted es uno de los desarrolladores que todavía no se ha hecho el cambio de SMS a GCM, usted debe saber que el protocolo SMS no está codificado ni es seguro contra ataques de suplantación. Lo que es más, un SMS puede ser leído por cualquier aplicación en el dispositivo del usuario que tiene el permiso READ_SMS.
GCM es mucho más seguro y es la forma preferida para empujar mensajes a una aplicación, porque todas las comunicaciones GCM están encriptadas . Ellos se autentican utilizando fichas de registro actualiza de forma regular en el lado del cliente y una clave de API única en el lado del servidor.
5. No soliciten datos personales
La privacidad de los usuarios se le da mucha importancia en estos días. De hecho, hay leyes, como la Directiva de Protección de Datos de la Unión Europea y la Ley de Protección de Información Personal y Documentos Electrónicos de Canadá, los cuales exigen la protección de la privacidad de un usuario. Por lo tanto, a menos que tenga una buena razón y una infraestructura muy pero muy segura para recoger, almacenar y transmitir información personal del usuario, se debe evitar pedir directamente en sus aplicaciones.
Un mejor enfoque para la autenticación del usuario y la información de perfil de usuario es a través de la Plataforma de Identidad Google. Identidad de la Plataforma Google permite a los usuarios registrarse de forma rápida en su aplicación a través de su cuenta de Google. Después de una señal de éxito en medio de la plataforma, siempre que sea necesario, su aplicación puede fácilmente buscar varios detalles sobre el usuario, como el nombre del usuario, dirección de correo electrónico, foto de perfil, contactos, y mucho más. Como alternativa, puede utilizar los servicios gratuitos como Firebase que puede administrar la autenticación de usuario para usted.
Si tiene que manejar las credenciales de usuario a sí mismo, se recomienda que almacene y transmitirlas en forma de hash seguras. La forma más sencilla de generar diferentes tipos de hash utilizando el SDK de Android es mediante el uso de la clase MessageDigest.
He aquí un pequeño fragmento de código que muestra cómo crear un hash de la cadena Hello World mediante la función hash SHA-256:
// Initialize MessageDigest to use SHA-256
MessageDigest md = MessageDigest.getInstance(«SHA-256»);
// Convert the string to a hash
byte[] sha256Hash = md.digest(«Hello World».getBytes());
6. Validar entrada de usuario
En Android, la entrada del usuario no válido no suele dar lugar a problemas de seguridad como desbordamientos de búfer. Sin embargo, si se permite a los usuarios interactuar con una base de datos SQLite o un proveedor de contenidos que utiliza internamente una base de datos SQLite, debe rigurosamente desinfectar la entrada del usuario o hacer uso de consultas con parámetros. De no hacerlo, hace que sus datos sean vulnerables a los ataques de inyección SQL.
En una nota similar, la validación de entrada del usuario y la desinfección también es muy importante si usted está utilizando la entrada del usuario para generar dinámicamente el código para funcionar en un motor de scripting embebido, como Mozilla Rhino.
7.Antes Publicar utilizar ProGuard
Las medidas de seguridad integradas en una aplicación para Android se pueden comprometer seriamente si los atacantes son capaces de poner sus manos en el código fuente. Antes de publicar su aplicación, se recomienda hacer uso de una herramienta llamada ProGuard, que se incluye en el SDK de Android, para ofuscar y compactar el código fuente.
Android Studio incluye automáticamente ProGuard en el proceso de construcción si el buildtype está listo para lanzar. La configuración por defecto ProGuard disponibles en el archivo Proguard-android.txt del SDK de Android es suficiente para la mayoría de aplicaciones. Si desea agregar reglas personalizadas para la configuración, puede hacerlo dentro de un archivo llamado proguard-rules.pro, que es una parte de cada proyecto Android Studio.
——————————————————————————————————————–
Espero que ahora tengan una mejor comprensión de cómo hacer que sus aplicaciones de Android sean mas seguras. La mayor parte de las mejores prácticas que he mencionado en este artículo sólo son aplicables si está utilizando el SDK de Android para desarrollar sus aplicaciones. Si está utilizando el NDK de Android en su lugar, usted tiene que ser mucho más cuidadoso, ya que la programación en el lenguaje C, se espera gestionar los detalles de la aplicación en bajo nivel, tales como punteros y asignación de memoria a sí mismo.
Para obtener más información sobre la seguridad en Android, se puede hacer referencia a los documentos de seguridad AOSP.
Hola soy Alex Céspedes fundador de ANDROFAST, programo algunas cosas por diversión, me gusta aprender cosas nuevas y estoy pendiente de todo lo que tenga que ver con tecnología. Este blog lo cree para todas las personas que tengan dificultades en la programación, para ser sincero nunca fui bueno y reprobé algunos cursos de programación, pero mis ganas de aprender pudieron más. SI YO PUEDO TU PUEDES ANIMO!