Seguridad de token web JSON

6

He estado trabajando con JSON Web Tokens y he estado leyendo sobre cómo hacer que una aplicación sea más segura. Cuando un usuario está autorizado, el token se firma y un token se colocará en el encabezado de autorización. Este token se puede colocar en localStorage, sessionStorage o cookieStorage. La última opción resultó ser la opción más segura, pero me preguntaba si alguna característica de un token web JSON, o algún middleware, o tal vez el cifrado web JSON (no estoy realmente seguro de cómo funciona) que impida que un atacante malintencionado interceptar / capturar ese token y utilizarlo para futuras solicitudes a las API de la aplicación, ya que todo lo que se necesita es un pedido para que un servidor tonto responda por la información solicitada.

    
pregunta My Name 19.11.2015 - 02:39
fuente

2 respuestas

2
  1. Enviar el token a través de TLS.
  2. Firme el token con un par de claves privadas / públicas (es decir, RSA, ECDSA) para evitar la manipulación (¡No usa un secreto compartido!).
  3. Si su token es robado, el atacante solo puede usarlo por un corto período de tiempo. Puede establecer el tiempo de caducidad en 15 minutos.
  4. JSON Web Encryption (JWE) proporciona confidencialidad de contenido. Puede utilizar la criptografía asimétrica para enviar contenido confidencial. Consulte este ejemplo .
respondido por el CipherX 23.11.2016 - 09:49
fuente
2

Asegurando las credenciales de usuario - Cookies de sesión vs. JWTs:  - Implemente HTTPS en su servidor, y el formulario de inicio de sesión se publica a través de este canal seguro  - Almacene el ID de sesión en una cookie segura, solo para HTTPS, que solo puede enviarse a su servidor a través de canales seguros  - Prevención del código malicioso (XSS): No usar almacenamiento local  - Uso de tokens web de JSON para asegurar la interfaz de usuario de su aplicación web: 3 partes:

Header:
{
"typ":"JWT",
"alg":"HS256"//ALGORITHM HS256 are specifically designed to PREVENT alteration of the payload
}

JWT: should be signed with a private signing key
Body:
{
"iss":"your site"//Who issued this token,
"exp": //timestamp,//set the good expiration time
"sub": "users/105898"//user ID,
"scope": "self api/comment"//What this user can do
}

Notas:

  • Al validar un JWT entrante, tenga cuidado con lo que considera válido
  • Si la biblioteca JWT cambia lo suficiente, es posible que la biblioteca que está utilizando tenga que cambiar de manera que rompa la compatibilidad con su código. Siga el enlace
respondido por el Rei 22.12.2016 - 22:15
fuente

Lea otras preguntas en las etiquetas