Consulta sobre HTTPS y JWT

Iniciado por zonahurbana, 17 Agosto 2016, 03:28 AM

0 Miembros y 1 Visitante están viendo este tema.

zonahurbana

Hola.
Debo implementar una api en Laravel, que será usada en una app Android.
Ya he hecho esto antes, pero nunca me preocupé realmente por si la api era segura.

Lo primero que debo hacer es el login. Para ello he leído que usar Json Web Tokens en una forma válida de hacerlo.
JWT consiste en enviar las credenciales haciendo una petición a la api. La api verifica los datos, genera un token, y lo devuelve como respuesta. La app Android almacenará este token y lo usará en el header de las peticiones siguientes.

Mi pregunta es, ¿por qué se aplica un cifrado sobre el token y no se envían las credenciales en cada petición?
Si el token es cifrado debe ser porque se puede acceder a él a través de un análisis en el tráfico de red. En todo caso, la primera petición, cuando el token aun no se ha generado, ¿está totalmente expuesta?

Leí acerca de "man-in-the-middle", pero no sé si el concepto se aplique exactamente en este caso. Según leí, esto puede evitarse usando HTTPS.
¿HTTPS protege las peticiones que se hagan sobre una página determinada sin importar quién sea el cliente (web, app móvil)?

Si esta protección es cierta, ¿debería preocuparme en conseguir HTTPS para el dominio donde funcionará la api más que por aplicar JWT?
Es decir, podría aplicarse JWT adicionalmente, pero si HTTPS ofrece un cifrado a las peticiones, teóricamente ya no tendría que usar tokens, verdad?
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Diabliyo

#1
El token es una cosa y asegurar el canal de comunicacion es otra.

Una token generalmente se usa para que seas identificado sin necesidad de enviar siempre el usuario y password. En APIs como facebook, twitter y otros... es forzoso emparejarse con el servidor para obtener el token y ya con esa token puedes mandar consultas, mientras jamas responde.

El HTTPS se encarga de cifrar el canal de comunicacion, el cual te ofrece una capa adicional de seguridad ante miradas indiscretas.

Pero OJO nada es seguro, porque igual un MITM puede capturar tu emparejamiento del servicio https y ya sabra las credenciales.

Saludos !

zonahurbana

Cita de: Diabliyo en 18 Agosto 2016, 05:33 AM
El HTTPS se encarga de cifrar el canal de comunicacion, el cual te ofrece una capa adicional de seguridad ante miradas indiscretas.

Pero OJO nada es seguro, porque igual un MITM puede capturar tu emparejamiento del servicio https y ya sabra las credenciales.
Gracias por responder.

Si alguien revisa el tráfico, y no hay presencia de HTTPS, verá el token y podrá usarlo (hasta que caduque). Pero si llegó a ver la 1ra petición (cuando no había token), ya tiene las credenciales. ¿Es correcto?

Es decir si alguien está viendo las peticiones, el hecho de usar token solo reduce la probabilidad de que vea las credenciales (por ser usadas solo en la 1ra petición). No hace nada más que eso.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...