2011-12-19 14 views
7

Necesito hacer solicitudes a un servicio web a través de la aplicación de Android. El servicio web se puede diseñar según sea necesario.Solicitudes de servicio web seguro

Me parece que no importa qué enfoque elegiré, alguien que quiera hackearlo, solo tendrá que aplicar ingeniería inversa a mi código de aplicación Android (que no es muy difícil) y podría ver exactamente lo que hago , si cifro los datos, uso la contraseña codificada o cualquier otra solución para ese asunto.

¿Existe una solución que sea 100% segura?

+0

Echa un vistazo a esto. Creo que están haciendo lo mismo: http://stackoverflow.com/questions/2320937/securing-communication-from-android-to-a-web-service – eboix

+0

Leí esta respuesta antes de hacer la pregunta, pero No creo que resuelva el problema de la ingeniería inversa de la aplicación. –

+0

puede cifrar los datos, almacenar el hash de la clave en db y cifrar el db. esto debería ser más difícil de hackear – Mal

Respuesta

6

No es 100% seguro, todo lo que puede hacer es dificultar las cosas para su atacante. Cosas que se pueden considerar:

  • Cifrado - Pasando sus peticiones a través de canales cifrados se detendrá olfateo básica (esto puede ser contrarrestado con MITM)

  • ofuscación - Haga su intención más difícil de entender cuando hacen descompilar su aplicación

la segunda parte de esto es la mitigación - la capacidad de darse cuenta cuando su aplicación se ha visto comprometida y tratar con él. Una forma típica de manejar esto es asignar un token único a cada cliente en la primera ejecución y luego pasarlo como un argumento en cada llamada a su servicio.

De esta forma, si alguien descompila su aplicación y descubre cómo llamar a su servicio, al menos puede comenzar a monitorear de dónde provienen las solicitudes abusivas y controlar el comportamiento sospechoso (es decir, múltiples solicitudes de la misma clave en un corto período de tiempo) a través de diferentes direcciones IP). Desde allí puede comenzar a bloquear claves.

+1

+1 Buena respuesta, espero lo mejor: prepárese para lo peor – amelvin

+0

Vea esto http://shabbirdhangot.wordpress.com/2014/07/12/secure-web-service-url-in-android/ –

2

Le preocupa la "piratería", pero la base de cualquier discusión de seguridad es definir el riesgo.

¿De qué estás tratando de proteger?

Por ejemplo, ¿está intentando protegerse contra un atacante para leer la conexión de otra persona al servidor?

Una solución simple y segura para este escenario sería utilizar un intercambio asimétrico de claves para las claves de cifrado simétricas o utilizar un protocolo existente que lo haga (por ejemplo, HTTPS). incrusta la clave privada del servidor (o el certificado si usa HTTPS) para defenderse también de los ataques de hombre en el medio. La ingeniería inversa de su aplicación no ayudará a un atacante aquí.

Cuestiones relacionadas