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.