Hashing valores de cookies y prevención del robo de cookies

1

Tengo problemas para entender cómo se almacenaría de forma segura una cookie con hash. Y cómo realmente hash una cookie.

Esta es la situación: Cada visitante (no usuario, sino también visitante no registrado) del sitio web obtiene su propia 'página secreta', allí puede ingresar información 'secreta'. El problema es que el visitante obtiene esto sin la necesidad de seleccionar una contraseña o algo relacionado. La clave secreta se genera automáticamente y se almacena como una cookie. El problema: si la cookie se ve comprometida, el atacante puede "falsificar" su propia clave secreta cambiando su propia clave, en esa del usuario.

Pensé que podía solucionar este problema al:

  1. Generando una clave única para cada usuario
  2. Guarda la versión con hash en la base de datos
  3. Guardar la versión con hash en una cookie
  4. Cuando el visitante visita, compruebe si la cookie con hash coincide con el valor de la base de datos

Problema: el atacante podría copiar solo el hash de la cookie. Porque, después de todo, es solo texto sin formato y todavía coincidiría con el valor de la base de datos.

O usando este método:

  1. La clave generada (A) se encripta utilizando, por ejemplo, AES con la clave B. La cadena generada se almacena en una base de datos.
  2. La clave B se almacena en una cookie; con ID de visitante
  3. Cuando el visitante visita, tomo su ID de visitante para saber en qué fila En mi base de datos tengo que buscar, y si la clave B descifra con éxito la "cadena", el usuario tiene acceso a la clave A para acceder a la clave secreta.

Pero este es exactamente el mismo problema que el anterior ...

Estoy luchando con el hecho de que, además de la longitud, una contraseña permanece segura siempre que el usuario mantenga su montículo cerrado o su PC libre de malware. Pero como el robo de cookies es tan fácil, necesito otro mecanismo para las cookies.

Entonces, ¿cómo protejo a los visitantes del robo de cookies en esta situación? No estoy pidiendo banderas como HttpOnly o algo relacionado, sino realmente un algoritmo / mecanismo / ... Solo necesito asegurarme de que el usuario es el mismo usuario que en las sesiones anteriores. Y alguien más no cambió su cookie en la del otro usuario. Todo esto sin ninguna interacción (correo electrónico, nombre de usuario, contraseña) del visitante.

    
pregunta O'Niel 09.07.2016 - 02:38
fuente

1 respuesta

2

Para simplificar tu pregunta:

  • Desea compartir algún secreto (es decir, una cookie con hash o lo que sea) con el usuario.
  • No tienes qué involucrar a ningún usuario en la protección del secreto, es decir, no iniciar sesión o lo que sea.
  • Desea que esto se guarde incluso si la computadora fue hackeada.

Esto es imposible. Si la computadora es hackeada, el atacante puede hacer todo lo que no requiera ninguna interacción específica del usuario (como ingresar una contraseña que solo el usuario conozca). Esto significa que el atacante puede acceder a este secreto y puede usarlo. Puede agregar alguna información sobre la computadora en el secreto (es decir, la IP de origen, la huella digital del navegador ...) para que sea difícil usar el secreto de otra computadora, pero el atacante aún puede usar el secreto directamente en el sistema de las víctimas. / p>     

respondido por el Steffen Ullrich 09.07.2016 - 10:43
fuente

Lea otras preguntas en las etiquetas