Generando el token CSRF de sesión basado en el ID de sesión SSL

1

Situación siguiente:

  • La aplicación solo es accesible a través de HTTPS / SPDY
  • nginx está enviando el ID de sesión SSL al servidor ascendente
  • Al iniciar la sesión, me gustaría usar los primeros 128 caracteres de esa cadena
  • En PHP: $csrf_token = substr($_SERVER["SSL_SESSION_ID"], 0, 128);
  • El token CSRF se almacena en el servidor en la sesión del usuario y se generará un token nuevo si se genera una nueva sesión

Mi (s) pregunta (s):

  • ¿Es este enfoque seguro (suficiente)?
    • ¡Esta pregunta tiene que ver con el uso del ID de sesión SSL y no con el uso de tokens CSRF basados en sesión!
  • ¿Sería posible usar menos caracteres (por ejemplo, 32)?
  • ¿Debo agregarle algún tipo de sal secreta?
  • ¿Algo más que pueda ser un problema con esto?
pregunta Fleshgrinder 10.06.2013 - 22:56
fuente

2 respuestas

3

Puedes hacer esto, pero en el momento en que tu aplicación crezca y necesite la descarga de ssl, se romperá. También tenga cuidado con la longitud a medida que expone una parte de la ID de sesión ssl que es responsable de proteger a su CIA. Si tomara una parte demasiado grande de la identificación o la totalidad de la misma y un atacante podría pasarla por xss, también podría interrumpir su sesión de ssl.

Por favor, no seas un dave.

    
respondido por el Lucas Kauffman 11.06.2013 - 19:10
fuente
2

Reutilizar puntos de datos criptográficos para otros propósitos es uno de los pecados capitales de la seguridad de los datos.

No hay una razón lógica para hacer lo que estás sugiriendo. Y si una vulnerabilidad específica para lo que está sugiriendo está disponible de inmediato, sigue siendo una mala idea.

Simplemente use un valor aleatorio, que es el método conocido, examinado y aceptado. De lo contrario, se adentra en el territorio de Dave .

    
respondido por el tylerl 11.06.2013 - 20:45
fuente

Lea otras preguntas en las etiquetas