Recupero datos de un servidor externo para utilizarlos con mi aplicación de Android. Me gustaría que esta información solo fuera accesible con mi aplicación. Uso una conexión http estándar para obtener los datos del servidor apache/php en formato json. También envío algunos parámetros al servidor para recuperar datos relevantes. Ahora, lo que planeo hacer es:Compruebe si la solicitud http proviene de mi aplicación de Android
- Enviar los parametros
- enviar algo como MD5 ("someSecretPhrase" + parametros).
- Compruebe si la frase secreta es correcta en el lado del servidor.
Ahora, la pregunta es: ¿es un enfoque seguro con respecto a la ingeniería inversa? Por ahora no puedo pensar en otra posibilidad para obtener estos datos. Pero si alguien puede descompilar mi apk, también podrá recuperar esta "someSecretPhrase" (algo difícil de hacer en el lado del servidor) y luego acceder al servidor, ¿no? ¿Es una amenaza real? ¿Hay alguna otra posibilidad de autenticar mi aplicación por parte del servidor?
Miré los foros, por ejemplo. Identify whether HTTP requests from Android App or not? and then respond appropriately, pero no explican el problema de descompilación.
Estoy empezando en un alojamiento compartido, por lo que la arquitectura diferente en el servidor probablemente no sea una opción para mí. Esta información no es tan vulnerable (no hay números de tarjetas de crédito de clientes), pero requerirá mucho trabajo reunirla (y se reunirá continuamente) por lo que sería realmente malo si alguien pudiera simplemente copiar mi idea y usar los datos. .. –
Bueno, si su servidor responde con algunos datos, debería considerarlo público. Además de descompilar su aplicación y falsificar las solicitudes, él (atacante) podría simplemente usar un proxy y volcar los datos que envía a su aplicación legítima. –
Entonces, si te entendí correctamente, la única opción para hacerlo de forma segura es utilizar una conexión encriptada entre el servidor y la aplicación. Https estaría bien? Entiendo que no es tan fácil de usar. Pero, ¿cuáles son otros inconvenientes? Es considerablemente más lento, ¿no? Estoy tratando de averiguar si la seguridad de esta información vale la pena el esfuerzo –