¿Cómo puedo proteger una API web que he escrito para que otros clientes no tengan acceso a ella?

Desafortunadamente, nunca puede estar 100% seguro de que el cliente que usa su API es su propia aplicación. Como dice el refrán, nunca confíes en el cliente .

Sin embargo, puede hacer algunas cosas para reducir la posibilidad de que alguien (ab) use su API:

  1. Cifrar toda la comunicación. Use HTTPS para que alguien no pueda rastrear fácilmente su tráfico y averiguar cómo acceder a su API.
  2. Ofusca tu código . Esto reducirá la posibilidad de que las personas puedan descompilar su código y usar su API. De forma predeterminada, ProGuard (al menos en el SDK de Android) no cifra las cadenas, por lo que deberá encontrar una manera de ofuscarlas usted mismo. Quizás agregue su propio código de desafío-respuesta a su protocolo de enlace API, lo que lo hace un poco más difícil que solo encontrar el token / secreto correcto.
  3. Mudar. Incluso si alguien resuelve cómo usar su API, mutela a menudo para que tenga que averiguar cómo volver a usarla. Recuerde dejar un período de gracia para que los usuarios de versiones antiguas de su software tengan tiempo para actualizarse.
  4. Utiliza un protocolo personalizado. La mayoría de las API usan HTTP / REST u otro protocolo RPC popular. Escribir el tuyo es difícil, pero lo hace un poco más difícil para cualquier atacante potencial.

En realidad hay una quinta opción. Deje que la gente use su API. Que sea fácil para ellos. Quizás nadie lo haga. O tal vez, suficientes personas lo usan para que pueda crear un negocio solo desde la API y cobrarles en consecuencia. Si es tan valioso para usted, lo más probable es que también lo sea para otra persona: ¡úselo para su ventaja!

More Interesting

¿Cuál tiene mejor potencial entre el desarrollo web y móvil?

¿Se debe crear una aplicación móvil directamente o un sitio web primero?

¿Podemos crear aplicaciones de redes sociales como WhatsApp y Hike desde Java?

¿Cuáles son las 5 ventajas de las aplicaciones híbridas sobre las aplicaciones nativas?

¿Qué aplicaciones utilizas que no son tan populares en Google Play (menos de 1,000,000 de descargas)?

¿Qué porcentaje de las tiendas de desarrollo de aplicaciones web y móviles utilizan herramientas de prueba de regresión automatizadas?

¿Cuáles son las principales diferencias entre probar aplicaciones móviles y aplicaciones web?

Tengo una aplicación pero necesito aprender a diseñar el backend de la aplicación. ¿Dónde puedo comenzar a construir servidores web con MySQL?

¿Las aplicaciones web son mejores que las aplicaciones nativas?

¿Cuáles son algunas herramientas disponibles para automatizar aplicaciones web móviles en navegadores web iOS y Android?

¿Son las aplicaciones móviles lo mismo que las aplicaciones web?

Google se está centrando en aplicaciones web progresivas. Entonces, ¿cuál es el alcance de los desarrolladores de aplicaciones nativas (de fondo Java) como yo?

¿Cuáles son algunas aplicaciones menos conocidas y nuevas empresas basadas en sitios web que vale la pena conocer en 2015?

¿Es posible ralentizar la música (pero no bajar el tono) con alguna aplicación o servicio web común o gratuito?

¿Cómo debo mantener y rastrear mis diversas listas de datos?