Para responder a su pregunta específicamente, el cifrado de datos aleatorios no tiene ningún valor a menos que esté utilizando ambos el cifrado y los datos no cifrados. Por ejemplo, uno podría almacenarse en la base de datos del servidor , mientras que el otro se sirve en la cookie . Sin embargo, un mejor enfoque es utilizar un hash de una sola vía en lugar de cifrado. Lo describiré a continuación.
Aquí hay algunas pautas para la administración segura de cookies de token de sesión:
Primero, asegúrese de que la cookie esté marcada como Secure
y HttpOnly
, y que tenga al menos 72 bits de entropía de un PSRNG criptográficamente seguro .
Luego, dado que la conexión es segura con HTTPS, la única forma de que la cookie sea robada es con un ataque del lado del servidor (SQLi, etc.) o un ataque del lado del cliente (es decir, un virus en la PC). En ambos casos es probable que ya sea un problema grave . Pero a veces con estos ataques, el atacante solo obtendrá una cantidad limitada de datos. El solo hecho de secuestrar un token de sesión podría ser un verdadero ahorro de tiempo para el atacante, incluso si otros ataques son posibles también. Por lo tanto, en algunos casos, un esquema de administración de cookies de token de sesión bien asegurado puede hacer una gran diferencia.
Si el token de sesión es robado del cliente , no hay mucho que puedas hacer . Me gusta bloquear cada sesión en una sola dirección IP, pero eso no es aceptable para los usuarios móviles.
Sin embargo, suponiendo que los tokens de sesión fueron robados del servidor (es decir, un ataque SQLi de solo lectura), puede ayudar a mitigar esto mediante el diseño. En la base de datos del servidor, solo almacena un hash SHA-2 del token. De esta manera, el atacante no puede volver a convertirlo en un valor de cookie utilizable. Obviamente, tales ataques siguen siendo problemas graves por otras razones, al menos usted se ha asegurado con éxito contra este tipo de secuestro de sesión.
En general, la aplicación debe estar protegida contra XSS y SQLi, por supuesto.