Seguridad de código de Android
No hay forma de proporcionar una seguridad del 100% de una aplicación de Android. Si alguien se compromete a ingresar el código de su aplicación, lo hará. La única forma de combatirlo es hacerlo sin sentido.
En el caso de una aplicación iOS escrita en Swift, es un proceso difícil y laborioso, debido a su relativa novedad, pero ¿qué pasa con Java? Ha existido durante décadas y hay millones de desarrolladores. Teniendo en cuenta las peculiaridades del sistema operativo Android, así es como puede proteger una aplicación. El código fuente de la aplicación de Android generalmente se escribe en Java, pero no se distribuye en compilaciones como código de bytes de Java, sino que se carga en archivos .dex, que se pueden descompilar en el código fuente de Java. La única medida eficaz que la comunidad parece estar de acuerdo es la ofuscación.
- ¿Qué es Android Nougat?
- ¿Cómo empiezo a comprar un teléfono inteligente?
- ¿Qué debería hacer Samsung para superar a Apple como la empresa de electrónica de consumo número 1? ¿Pueden lograr esto?
- ¿Qué es Android One y cuáles son sus características únicas?
- ¿Qué cosas puedo hacer en Android que no puedo hacer en un iPhone?
Ofuscación de código de Android
Una de las formas más poderosas para asegurar un APK de Android es usar la ofuscación de código. Esta práctica cambia los nombres y las clases de variables de la aplicación de forma regular para hacer que las cadenas de código sean confusas y rompan las dependencias. Pero es más que eso. La ofuscación de código también reduce el código, oculta algunos de los fragmentos y lo reduce significativamente. Algunas de las herramientas de ofuscación más populares son:
- Proguard
- DexProtector
Estas son herramientas sólidas que evitan intrusiones a través de algunos algoritmos criptográficos fuertes, al tiempo que inyectan controles de seguridad en Android APK. La aplicación se puede bloquear una vez que la herramienta se da cuenta de que el código de la aplicación está siendo aprovechado.
Licencias de aplicaciones de Android
Una característica incorporada de las licencias de aplicaciones de Android es un intento de aplicar una política de licencias flexible aplicación por aplicación: cada aplicación puede hacer cumplir las licencias de la manera más adecuada. Otorga algún tipo de control de acceso a su aplicación.
“Cuando una aplicación verifica el estado de la licencia, el servidor de Google Play firma la respuesta del estado de la licencia utilizando un par de claves que está asociado de forma exclusiva con la aplicación. Su aplicación almacena la clave pública en su archivo .apk compilado y la usa para verificar la respuesta del estado de la licencia “.
“Por ejemplo, una aplicación puede verificar el estado de la licencia y luego aplicar restricciones personalizadas que permiten al usuario ejecutarla sin licencia durante un período de validez específico. Una aplicación también puede restringir el uso de la aplicación a un dispositivo específico, además de otras restricciones ”. Esta característica ya se está utilizando para integrar la seguridad y la transparencia en el uso del código de la aplicación del lado del cliente.
Pautas generales de seguridad de aplicaciones en Shakuro
Como puede parecer, el código no es la parte más valiosa de su aplicación, sin duda es el corazón de una aplicación, pero es casi contraintuitivo cuánto se necesita para descompilar el código y construir un clon. En cambio, hay algunos problemas específicos de dispositivos móviles que afectan el activo más valioso que tiene: la información. El objetivo principal del desarrollador es mantener la información segura y privada.
Almacenamiento de datos
Si una aplicación almacena datos de usuario, especialmente credenciales, tokens y claves de acceso, esas cosas deben protegerse mejor que solo Archivo Info.plist . En su lugar, use los servicios de llavero del sistema nativo o las bibliotecas de terceros para un almacenamiento seguro. Además, usar caché y no hacer una copia de seguridad de todos los datos en los servicios en la nube puede ahorrar espacio y evitar que alguien lo analice.
Canales de comunicación seguros
El protocolo HTTP es una aplicación sin cifrar para el método de comunicación del servidor. Los puntos de Wi-Fi públicos a los que se conectan muchos teléfonos a diario pueden ser el medio para ataques de hombre en el medio. Entonces, si se envía algo confidencial o crítico para la seguridad, HTTPS es el canal de comunicación más seguro. Para protocolos de red personalizados, use TLS.
Datos del usuario
A medida que se integran más aplicaciones a nuestras vidas a través de varias funciones útiles, los teléfonos se convierten en los centros principales de información personal y confidencial que debe almacenarse de manera responsable. Si un usuario concede a su aplicación acceso a esa información, no debe duplicarse y almacenarse por separado en algún lugar. Estamos considerando seriamente dónde almacenamos la información y solo utilizamos fuentes no comprometidas.
Consejos específicos para Android
- Evite Webview debido a las vulnerabilidades de la interfaz Javascript.
- Evite la redelegación de permisos debido al acceso no autorizado de aplicaciones de terceros.
- Evite las intenciones debido a los riesgos de ser aprovechado.
- Evite las inyecciones SQL debido a la introducción inadvertida de vulnerabilidades.
Línea de fondo
Una de las mejores maneras de resistir es hacer que el jugo no valga la pena. El propósito de la piratería de aplicaciones es robar una aplicación y obtener algún tipo de recompensa por ella. Si la importancia de la recompensa no supera el tiempo y el esfuerzo invertidos, los piratas y hackers oportunistas la abandonarán. Al final del día, también son hombres de negocios … poco éticos e ilegales, pero respaldados por una lógica retorcida.
La abrumadora mayoría de los desarrolladores dice que si alguien quiere realizar una ingeniería inversa de una aplicación, lo harán.
Es justo decir que el código fuente no es la razón por la cual los clientes aprecian a los desarrolladores. Sí, es el resultado y el resultado de todo el trabajo duro, pero no es la razón por la que nos pagan. Cuando los clientes contratan un equipo, invierten en la solución de su tarea, que está más allá del código. Deciden contratar un equipo en función de sus habilidades técnicas, su experiencia, su modelo de negocio, etc. Ganamos clientes por la forma en que nos comunicamos y nos esforzamos por comprender sinceramente sus proyectos, y mostramos nuestro compromiso con ellos una vez que comenzamos.