¿Cómo evitar el uso involuntario de la API REST?

0

Para un proyecto universitario, se supone que debo implementar una API que permita el almacenamiento y la recuperación de cadenas. Los clientes que acceden a esta API pueden ser aplicaciones de teléfonos móviles y dispositivos integrados de bajo consumo. Los datos almacenados no son confidenciales, pero no quiero que los atacantes los modifiquen o eliminen. Lo más probable es que no se utilice fuera de nuestros experimentos limitados, pero me gustaría mucho entender cómo se haría de la manera correcta.

Tengo las siguientes restricciones:

  • Por razones de facilidad de uso, sería bueno si el usuario no se molesta al tener que crear una cuenta después de instalar la aplicación. En su lugar, quiero que obtenga un id / token en el primer lanzamiento, que es generado por el servidor que autentica e identifica a este usuario. Este ID / token se ha suministrado en todas las siguientes solicitudes
  • Mis dispositivos integrados no pueden usar TLS debido a restricciones de almacenamiento, RAM y CPU

Dadas estas restricciones, ¿debería tratar esta API como una API "pública", aunque en realidad no quiero que sea pública? ¿Hay algo que pueda hacer contra (por mi parte) el uso involuntario, además de limitar el acceso?

Cosas que he considerado:

Pensé en al menos tener la parte donde obtienes un ID / token de API a través de https, ocultando así dónde puedes crear una cuenta, y posiblemente también requiera que se proporcione una clave secreta. Sin embargo, esto se parece mucho a la seguridad a través de la oscuridad para mí, y probablemente será propenso a la ingeniería inversa. ¿Pero podría ser mejor que nada? Además, creo que debería usar tokens con derechos limitados después del proceso de registro, especialmente para mis dispositivos integrados, ya que probablemente no puedan manejar el uso de https todo el tiempo. De lo contrario, me arriesgo a que me roben el identificador de mi cuenta, que podría usarse para eliminar todos los datos o sobrescribirlos. Estos dispositivos integrados se utilizarán solo en entornos wifi de confianza (domésticos), pero eso no debería impedirme que haga las cosas bien.

Entonces, para mí, la situación se ve así:

  • I no puedo evitar de manera confiable que las personas usen mi API de una manera que no quiero que se use
  • I can y debería proteger los datos de los usuarios existentes de la modificación
pregunta connan 26.12.2015 - 13:36
fuente

1 respuesta

1

La generación de un token de API sin que el usuario lo sepa es absolutamente común. Hago esto todo el tiempo y esto no es un problema en sí mismo. Pero enviar los datos sin cifrar es un problema. Si esta es una alegación de tu profesor, no puedes hacer nada al respecto, pero si no quieres usarla debido a la razón dada de tu desempeño, ¡tengo que estar en desacuerdo contigo!

El uso de https no es nada que realmente ralentice mucho un dispositivo móvil. Muchas personas usan https todo el tiempo en sus teléfonos móviles y ni siquiera se dan cuenta de que se usa el cifrado porque no es una diferencia tan grande en el tiempo necesario. Si realmente necesita un rendimiento rápido, puede ajustar las opciones https de su servidor web. La parte que hace un uso intensivo del rendimiento es el protocolo inicial que incluye el cifrado asimétrico que se utiliza para intercambiar la llave maestra. La clave maestra es la clave simétrica que se utiliza para esa sesión. Puede configurar el tiempo de vida de la llave maestra a un valor más alto que el valor predeterminado en el lado del servidor para evitar la parte intensiva de rendimiento de las siguientes conexiones ssl.

    
respondido por el davidb 26.12.2015 - 17:47
fuente

Lea otras preguntas en las etiquetas