Control de acceso a la API pública

0

Estoy trabajando en una API pública para el proyecto X. El sistema permite registrar un app_id y llamar a los métodos de la API, como de costumbre. Ahora, necesito desarrollar un cliente móvil oficial para el proyecto X que debería tener más posibilidades que los no oficiales construidos sobre esta API.

En otras palabras, pensemos, por ejemplo, que tenemos una API que consta de 5 métodos GET. Ahora voy a implementar 1 nuevo método PUT y quiero permitir que solo 1 app_id exacto lo use.

El problema de seguridad es que:

  1. Si simplemente codifico el cheque para app_id, será fácil de superar, simplemente detectando el tráfico o eliminando la aplicación para encontrar este app_id oficial y luego simularlo

  2. La aplicación es móvil, por lo que no puedo limitar el acceso por IP

  3. Criptografía de clave pública, donde la clave pública está en el cliente y las claves privadas mantenidas en secreto por el servidor parecen iguales al problema 1. para mí, ¿no?

Creo que no es un problema de supernova, por favor sugiera soluciones confiables, por favor.

    
pregunta Ivan Fazaniuk 12.06.2015 - 13:07
fuente

1 respuesta

1

Coloque un sistema de respuesta-desafío en el código: el servidor envía "12345", el cliente responde con "SHA256 (12345 + cualquier clave secreta)". Si el servidor conoce la "clave secreta", puede verificar el hash.

Eso evitaría que la gente simplemente oliera los datos de la red, pero la aplicación todavía podría ser descompilada.

Si desea que la aplicación envíe datos, primero debe hacer un "inicio de sesión": envíe una solicitud, reciba un desafío "12345", calcule el hash, envíe el hash, se conectará y podrá continuar.

    
respondido por el Florian Bach 12.06.2015 - 13:23
fuente

Lea otras preguntas en las etiquetas