¿Puede una cookie de sesión "iniciada por el cliente" proporcionar más privacidad y seguridad que las alternativas de sesión existentes?

1

Hay varios usos para una cookie , y me gustaría ofrecer algún tipo de garantía de que una cookie se está utilizando para un propósito y alcance específico y limitado. En mi caso, quiero demostrar que una cookie solo se utiliza para la autenticación.

Pregunta

¿Hay alguna investigación previa que describa cómo se utilizaría una cookie o alternativa de cookie para proporcionar dicha garantía?

Ejemplo

En el ejemplo de una cookie de sesión, imagino que los parámetros de sesión normales se aplicarían

  • El alcance se restringiría a una o a un conjunto muy limitado de URL,
  • Establecer solo HTTP

Algunos requisitos de seguridad añadidos se verían así:

  • El cliente genera el nombre y el contenido de la cookie de una fuente criptográfica aleatoria
  • El cliente envía esta cookie preferida al servidor al mismo tiempo que se envían las credenciales
  • Si la cookie no entra en conflicto con una sesión existente, el servidor la acepta y la usa como un token de soporte para el resto de la sesión

¿Existe una solución similar o mejor para las personas que están preocupadas por las cookies, el seguimiento y otros aspectos de la privacidad?

    
pregunta random65537 07.08.2015 - 17:39
fuente

2 respuestas

1

No creo que esto proporcione ningún beneficio. En una aplicación web segura, cuanto menos dependa de los datos del cliente, mejor.

Puedo ver algunos problemas:

  • Esto seguramente creará una vulnerabilidad llamada Session Fixation : un atacante puede crear una sesión, atraer a su cliente a una página especial y tener los datos de la sesión en sus manos.

  • El servidor no tiene medios para saber si una sesión sess12345678 se está clonando, si el cliente cambió la IP o si el cliente está usando un proxy de equilibrio de carga. Si bloquea la sesión a una IP, los clientes móviles pueden tener problemas.

  • Si el token de la aplicación cliente no tiene suficiente entropía, es trivial para un atacante que bruteforce tenga muchos valores posibles.

  • Cualquier cookie creada por su aplicación puede ser leída por Javascript, por lo que un XSS puede enviarlos a un atacante.

  • Está aumentando sustancialmente la complejidad en el lado del servidor, porque tendrá que validar tanto el nombre como el valor de la cookie.

  • Crear una cookie y un valor criptográficos seguros en el cliente puede ser difícil, y un atacante puede falsificar o anular la generación fácilmente.

Me atengo a las cookies seguras para autenticar a los usuarios.

    
respondido por el ThoriumBR 07.08.2015 - 20:26
fuente
1
  

¿Hay alguna investigación previa que describa cómo una cookie o cookie?   ¿Se utilizaría una alternativa para proporcionar dicha garantía?

No creo que pueda proporcionar dicha garantía, excepto que tal vez lo diga en su política de privacidad y luego siga esa política.

  

El alcance se restringiría a una o a un conjunto muy limitado de URL,

El alcance de la configuración se puede realizar mediante la marca segura y los atributos de dominio y ruta cuando se establece la cookie. Sin embargo, es muy difícil para el usuario final rastrear esto utilizando un navegador normal; Digamos que restringes tu cookie a la ruta /loggedIn . Si el usuario visita su URL /information , a primera vista parece que su sitio no recibirá la cookie para las solicitudes a esta URL. Sin embargo, la página puede estar realizando solicitudes a /loggedIn usando JavaScript o mediante solicitudes de recursos, lo que permite que el usuario sea seguido de manera sigilosa.

Sí, un usuario preocupado por la privacidad podría verificar esto. Sin embargo, si estuvieran tan preocupados por la privacidad, simplemente eliminarían sus cookies de todos modos, haciendo que su compleja política de cookies y su implementación sean inútiles.

El cliente que configura el nombre y el valor de la cookie no resuelve este problema. Podría seguir rastreando el lado del servidor de usuario utilizando el nombre de la cookie y la información de valor. No estoy de acuerdo con ThoriumBR sobre la fijación de la sesión porque no creo que esto incremente el riesgo de tal ataque. Si el atacante puede configurar la cookie en el navegador de la víctima, es irrelevante si esta cookie es un nombre y valor elegido por el usuario o un nombre o valor elegido por el servidor. Además, no cambia el nivel de riesgo de otra vulnerabilidad similar: CSRF de inicio de sesión . Sí, si existe la vulnerabilidad, el atacante podría iniciar sesión en el usuario en la cuenta del atacante y establecer el nombre y el valor de la cookie, sin embargo, la configuración del nombre y el valor de la cookie no agrega ningún valor en sí mismo.

Si le preocupa que el uso de cookies disuadirá a los usuarios preocupados por la privacidad de usar su sitio, no necesita utilizarlas para mantener el estado del lado del cliente. Una forma es hacer que su sitio funcione solo a través de comentarios posteriores. Es decir, cada acción y navegación del sitio hace que se realice una solicitud POST, y los datos POST contienen un token al estado del lado del servidor.

por ejemplo

<form method="post" action="/siteAction">

  <input type="hidden" name="token" value="aaaaaaaaaaaaaaaaaaaaaa" />
  <input type="hidden" name="action" value="navigateAccountPage" />
  <input type="hidden" name="params" value="{foo: 'bar'}" />

</form>

* params debe estar codificado en html, sin embargo, se debe omitir por simplicidad

Esto le permitirá almacenar el estado del cliente sin la necesidad de cookies. El usuario sabe que no se les está haciendo un seguimiento, ya que simplemente pueden revisar las cookies y el almacenamiento de sus navegadores (técnicamente, el almacenamiento HTML5, Flash y Silverlight son completos).

    
respondido por el SilverlightFox 10.08.2015 - 11:33
fuente

Lea otras preguntas en las etiquetas