Compensaciones de seguridad al diseñar una API de servicio web móvil

0

No soy un experto en seguridad, pero quiero preguntar acerca de las compensaciones en una API de servicio web que estoy diseñando para aplicaciones móviles.

Es una API que rastrea las ubicaciones de los usuarios, de modo que sí, los datos son razonablemente confidenciales. Sin embargo, será utilizado por aplicaciones móviles, por lo que creo que la mayoría del tiempo se ejecutará en redes que son menos propensas a la escucha.

La aplicación mantendrá las credenciales de usuario (inicio de sesión y contraseña) encriptadas en una base de datos local. Aunque no estoy seguro de qué esquema de encriptación usar.

Se accederá a la API a través de HTTPS.

Estoy considerando un token multiusos de larga duración o tokens únicos de corta duración. Cuanto más corto (largo), mejor, para reducir el uso del ancho de banda. Sin embargo, no estoy al tanto de cómo se debe generar correctamente un token, en caso de que unos diez o más bytes aleatorios no sean suficientes.

Estoy preguntando por las compensaciones, por lo que me gustaría recibir consejos sobre qué tan segura es esta estrategia en la mayoría de los casos, es decir, en situaciones en las que es más probable que ocurran. Sin embargo, si siente que estoy pasando por alto los riesgos, siéntase libre de enfatizarlo y sugerir alternativas (aunque me gustaría saber qué tan lejos podría llegar con las concesiones si los datos fueran menos sensibles).

    
pregunta Piovezan 06.03.2015 - 20:36
fuente

1 respuesta

1
  

La aplicación mantendrá las credenciales de usuario (inicio de sesión y contraseña) encriptadas en una base de datos local. Aunque no estoy seguro de qué esquema de encriptación usar.

No cifres la contraseña, hash. Lo ideal sería usar algo como bcrypt .

  

Estoy considerando un token multiusos de larga duración o tokens únicos de corta duración. Cuanto más corto, mejor, para reducir el uso de ancho de banda. Sin embargo, no estoy al tanto de cómo se debe generar correctamente un token, en caso de que unos diez o más bytes aleatorios no sean suficientes.

El sistema más común que he visto es usar algo como un JSON Web Token . Cuando un usuario se autentica, crea un token con información que identifique al usuario (por ejemplo, la identificación del usuario) y una fecha de vencimiento. Firme y devuelva el token.

Cada vez que se usa el token para autenticar a un usuario, verificar la firma, confirmar que la fecha de caducidad no ha pasado y luego usar la ID de usuario para identificar al usuario.

    
respondido por el citruspi 06.03.2015 - 21:27
fuente

Lea otras preguntas en las etiquetas