autenticación JWT o cookies?

0

Actualmente estoy creando un sistema de inicio de sesión para mi sitio web. Para asegurar el servicio de inicio de sesión, ¿debo usar los tokens web JSON y el almacenamiento HTML5, o debo usar la forma más antigua de usar cookies? ¿Hay alguna de estas opciones seguras o hay una mejor manera de proteger mi sistema?

Además, si uso JWT o cookies, ¿cuál sería la forma más segura de autenticar a los usuarios?

Nota: este sitio solo tendrá una pequeña cantidad de usuarios, ya que es un sitio personal.

    
pregunta iProgram 25.11.2017 - 13:31
fuente

2 respuestas

1

Razones para elegir JWT:

  • No requiere que el servidor mantenga un estado, es decir, no es necesario realizar búsquedas costosas en cada solicitud.
  • Es más fácil compartir la autorización entre diferentes dominios.

Razones para elegir cookies de sesión:

  • Es más fácil de implementar en muchos idiomas y marcos (por ejemplo, PHP).
  • Revocación instantánea de la autorización, por ejemplo, el cierre de sesión de un usuario, es posible. Incluso con una más compleja, la revocación del sistema de dos token no es instantánea si utiliza JWT.

Al hacer algo simpe para algunos usuarios de PHP, no necesita los beneficios de JWT. Dado que PHP viene con una implementación de sesiones existente, solo usaría eso para evitar una complejidad innecesaria. Pero para un proyecto diferente con diferentes necesidades, la respuesta puede ser diferente.

    
respondido por el Anders 25.11.2017 - 13:48
fuente
1

Usa ambos. Solo tome algunas medidas para evitar el robo de identidad.

Está bien, pero hablemos de cómo hacerlo.

JWT no reemplaza a las cookies. No podría ser, ya que tienen propósitos diferentes.

En una aplicación web (por ejemplo, no en una api ), las cookies siguen siendo las más seguras y mejores para el transporte de credenciales a través de HTTPS. De hecho, hay al menos otra forma establecida de almacenar credenciales. Es el encabezado de autorización HTTP. El problema con los encabezados de autorización en una aplicación web es que estarán disponibles para las secuencias de comandos del lado del cliente, y cuando se requiera una sesión a largo plazo, tendremos que almacenar las credenciales en algún lugar. No hay una forma segura de hacerlo en los navegadores. Por lo tanto, los encabezados de autorización se utilizan mejor en las API que se consumen en el lado del servidor.

Tradicionalmente, una cookie de sesión solo almacena un puntero a los datos almacenados en otro lugar . Un servidor tendría que descodificar la cookie y luego recuperar los datos a los que apunta. Para sistemas grandes, se utiliza una base de datos de caché o de sesión para evitar vincular al usuario con un solo servidor. Ahora entra en JWT.

JWT es un formato de mensaje que puede contener toda la información que el servidor necesita para procesar las solicitudes, como identificar al usuario. Guarda el servidor de realizar una solicitud para obtener más datos. La carga útil completa se firma y se envía junto con el mensaje para confirmar que es válida. No es un hash ni es un secreto, por lo que no debe ingresar información confidencial . Ahora, todavía necesitamos un medio para transportar el JWT entre el servidor y amp; navegador. Una cookie Segura , HttpOnly se ajusta como un guante.

Los sistemas más grandes se benefician de JWT porque cualquier servidor podría atender una solicitud , a diferencia de una cookie de sesión generalmente (a menos que se indique anteriormente) vinculada a un solo servidor.

Hay otros pros & En contra de cada uno como lo dijo Anders en su respuesta, no lo repetiré por completo.

    
respondido por el André Werlang 25.11.2017 - 21:44
fuente

Lea otras preguntas en las etiquetas