Llamadas seguras de Android y del servidor

1

Planeo agregar un sistema de autenticación en mi aplicación de Android usando servicios web.

Cuando mi aplicación llama al servidor mediante una llamada POST, ¿cómo puedo asegurar que el cliente no pueda encontrar la URL e intente hacer sus propias publicaciones y usar esto contra mi servidor?

    
pregunta fxuser 01.01.2015 - 21:26
fuente

2 respuestas

1

Debe usar la conexión HTTP segura, es decir, HTTPS. No tengo un ejemplo práctico, pero eche un vistazo a las clases del paquete javax.net.ssl. *. Aquí creo que el servidor ya lo soporta. Si este no es el caso, debe hacer que el servidor lo admita.

    
respondido por el JackDVD 02.01.2015 - 02:49
fuente
1
  

Cuando mi aplicación llama al servidor mediante una llamada POST, ¿cómo puedo asegurar que el cliente no pueda encontrar la URL e intente hacer sus propias publicaciones y usar esto contra mi servidor?

Puede usar SSL / TLS para asegurar la conexión. El punto final de la URL será encriptado. Los clientes pueden ver que se están conectando al host "domain.com", pero no conocen la ruta real, por ejemplo. "domain.com/secret.php"

Asegúrese de utilizar la autenticación mutua. Esto se debe a que no se puede confiar en su dispositivo cliente. Tendría que incluir una clave privada con su aplicación que su servidor verificará a través de una respuesta de desafío. Sin la autenticación mutua, se puede usar un proxy web como fiddler para descifrar SSL.

Puede utilizar el almacén de claves de Android para almacenar la clave privada. Tenga en cuenta que si el teléfono está rooteado, la clave privada se puede recuperar. El siguiente enlace indica que a la raíz se le prohíbe crear o listar claves. Sin embargo, el comando su le permite a un usuario root cambiar a cualquier otro usuario, que puede enumerar sus propias claves.

Más información sobre el uso del almacén de claves para almacenar el certificado: enlace

Para comprometer su aplicación, el atacante primero debe rootear su teléfono, recuperar la clave privada, descifrar el algoritmo de cifrado, descifrar la comunicación y finalmente codificar a un cliente que simulará su aplicación. Esto debería proporcionar una cantidad razonable de seguridad que debería disuadir a la mayoría de los ataques ocasionales.

    
respondido por el limbenjamin 02.01.2015 - 03:58
fuente

Lea otras preguntas en las etiquetas