Red de conocimiento informático - Material del sitio web - Cómo crear aplicaciones seguras para Android

Cómo crear aplicaciones seguras para Android

Lo primero que hay que dejar claro es que la llamada seguridad es sólo un concepto relativo y no existe una seguridad absoluta. Para una aplicación, si un hacker tiene suficiente tiempo y está lo suficientemente decidido, puede descifrar todas las aplicaciones, por lo que lo que podemos hacer es hacer que la aplicación sea relativamente más segura o aumentar la dificultad de descifrarla. Las siguientes experiencias se enumeran sin ningún orden en particular:

Protección desde el nivel del código, como el uso de un ofuscador para ofuscar el código. Es importante elegir el ofuscador y el nivel de ofuscación adecuados. Al mismo tiempo, antes de cargar el APK en el mercado, debe descompilarlo usted mismo para comprobar si la ofuscación del código es efectiva. La ofuscación del código solo garantiza que el APK vea código sin sentido después de la descompilación, lo cual es más difícil de entender, pero no puede evitar el desensamblaje. Afortunadamente, Smail es más difícil de entender que el código descompilado. Pero Smail también tiene su propia sintaxis y aún se puede descifrar.

Al utilizar NDK, algunas lógicas o reglas clave, como algoritmos centrales, reglas de cifrado, etc., se implementan en C o C++, lo que puede aumentar en gran medida la dificultad de descifrar el código. Sin embargo, no existe una seguridad absoluta. Aunque el código C o C++ no se puede descompilar, sí se puede desensamblar. Los piratas informáticos todavía pueden leer archivos binarios, pero los expertos aún no pueden hacer nada. Una vez, el algoritmo de cifrado de nuestra aplicación estaba escrito en C, pero aún así estaba descifrado. También escuché cómo algunos maestros rompieron las bibliotecas de algoritmos de otras personas. El Tao tiene un pie de altura y el diablo tiene un pie de altura. Este es un juego entre ellos.

Ofrecer recursos. Dado que generalmente tenemos reglas y significados específicos para nombrar recursos, a los piratas informáticos a menudo les resulta difícil atacar debido a la ofuscación del código, por lo que recurren a los archivos de recursos como un punto de avance. El principio de ofuscación de recursos es similar al de ofuscación de código, que consiste en cambiar los nombres significativos originales a nombres sin sentido. Por ejemplo, home.xml se convierte en un.xml, que es el diseño relacionado con la página de inicio. es más difícil de entender.

El propósito de fortalecer el APK es evitar la descompilación. Hay muchas herramientas de cifrado de terceros disponibles, algunas son de pago y otras gratuitas. Si tiene la capacidad y la energía, se recomienda que usted mismo desarrolle y utilice herramientas de terceros, al menos yo personalmente no me sentiría muy cómodo.

No almacene información confidencial de la aplicación en un almacenamiento externo, ya que cualquiera puede acceder a la tarjeta SD. Lo mejor es tener un directorio privado de la aplicación. El enfoque perfecto es no guardar nunca ningún dato en el cliente, almacenarlo en la nube.

Al comunicarse con el servidor, utilice HTTPS tanto como sea posible para realizar una verificación real del certificado y del host para evitar ataques de intermediario y garantizar la seguridad de la comunicación de datos. los datos están en la nube.

Al almacenar datos críticos en la base de datos local del cliente o SharedPreferences, no almacene texto sin cifrar. Se estima que los nombres de usuario y contraseñas de muchas aplicaciones se almacenan en el lado del cliente en texto sin cifrar. Asegúrese de cifrarlos. Las claves de cifrado se analizarán más adelante.

Utilice un algoritmo de cifrado existente en lugar de escribir el suyo propio. Probado es mejor que no probado.

Todo cifrado utiliza cifrado asimétrico siempre que sea posible. Es mejor no almacenar las claves de cifrado localmente. Si se guarda localmente, debe estar oculto o escrito en C o C++, y es sólo cuestión de tiempo que se descubra.

Para la comunicación entre procesos, la recepción de transmisiones y las llamadas de intención implícita entre procesos, debe prestar atención a la configuración de permisos y las precauciones de seguridad para evitar la fuga de información o datos.

Utilice consultas parametrizadas SQL para evitar la inyección SQL.

Si no se requiere JavaScript en WebView, se debe desactivar para evitar ataques XSS. Desafortunadamente, la mayoría de las aplicaciones híbridas hoy en día requieren JavaScript. Para aplicaciones híbridas, se debe recordar a los desarrolladores web que ofusquen el código JavaScript.

Minimiza los permisos que requiere la aplicación y no solicites permisos innecesarios, porque cuantos más permisos tengas, menos segura será la aplicación. Una muy buena solución es utilizar intenciones tanto como sea posible y reducir la cantidad de permisos de la aplicación. Por ejemplo, al realizar una llamada telefónica, puede marcar a través del sistema de llamada por intención, por lo que no tiene que solicitar permiso por separado.

Cuando utilice un SDK de terceros, debe investigar bien para comprender si el SDK contiene factores inseguros, como recopilar en secreto la ubicación geográfica del usuario o información clave de la aplicación en segundo plano, o incluso hacer otras cosas turbias. Ni siquiera se puede confiar en los SDK proporcionados por los principales fabricantes. Según la situación de la industria nacional, ya sabes.

Puede realizar un juicio preliminar basándose en los permisos requeridos por el SDK de terceros. Si requiere muchos permisos que no están relacionados con la funcionalidad que expresa, entonces debe tener cuidado. Si la tercera biblioteca es de código abierto, debe leer el código fuente. Si no es de código abierto, puedes intentar descompilar la biblioteca de terceros y buscar cadenas sospechosas.

La verificación de seguridad debe realizarse no sólo en el lado del cliente, sino también en el lado del servidor. Siempre que sea posible, utilice información como el ID del dispositivo, la dirección Mac del dispositivo, el modelo y la marca del dispositivo para ayudar en la verificación del nombre de usuario y la contraseña.

La verificación del servidor debe realizarse bien y las API RESTful deben evitarse tanto como sea posible, porque la uniformidad de dichas reglas de API facilita la implementación de otras intrusiones después de aprender una.

El servidor necesita decidir el intervalo de acceso y la frecuencia de una única IP en función del número o tipo de solicitudes. Si se accede con frecuencia, puede considerarse extracción de datos y bloqueo.

El servidor debe acordar las reglas de autenticación de solicitudes con el cliente, como el uso de un mecanismo de números aleatorios para evitar ataques de repetición en el servidor.

Durante el proceso de desarrollo de Android, aprenda a utilizar la herramienta Lint y preste atención a las advertencias en la clasificación de seguridad.