¿Debo permitir que el cliente envíe la sesión y el ID de usuario?

2

Estoy trabajando en un proyecto donde los usuarios tienen cuentas e inician sesión con su nombre de usuario y contraseña si están correctos, el código devuelve un ID de sesión. La próxima vez que abran la aplicación o visiten el sitio, obtendrán la sesión almacenada, la enviarán a la base de datos y devolverán los datos del usuario.

Mis problemas son qué pasa si alguien encuentra una manera de ingresar identificadores de sesión falsos y luego visitar mi sitio y si siguen intentándolo, están obligados a obtener una sesión válida.

En los datos de usuario y las cookies de la página web de la aplicación, además de almacenar el token de la sesión, ¿también debo almacenar algo como su ID de usuario? Luego, cuando visitan el sitio, obtengo la identificación de la sesión y del usuario para comprobar si coinciden, lo que hace que sea más difícil para alguien escribir sesiones al azar, ya que tienen que encontrar una sesión y una identificación de usuario correcta (que tiene 120 caracteres). / p>     

pregunta Dan 14.04.2018 - 22:13
fuente

1 respuesta

10

Tienes razón en que necesitas asegurarte de que las ID de tu sesión no puedan ser forzadas por la fuerza bruta. El truco es hacer que el ID de sesión sea largo y aleatorio (y cuando digo aleatorio, me refiero a de forma segura al azar ). Si el ID de sesión se une con un ID de usuario, sería más difícil la fuerza bruta, ya que el atacante tendría que adivinar los ID de un usuario a la vez. Eso significa que el ID de sesión podría ser algo más corto. Pero como no le cuesta nada tener una ID de sesión larga, no es necesario intentar acortarlo.

Si usa una ID de sesión de 64 bits y tiene mil millones de usuarios, un atacante tendría que hacer un promedio de 2 64 / 10 9 * 1/2 10 < sup> 10 adivina antes de que ella obtenga una respuesta correcta. Sin causar ningún problema de rendimiento, puede duplicarlo y usar las ID de sesión de 128 bits, y tendrá un margen ridículo.

Por lo tanto, no hay ningún daño en enviar la identificación del usuario junto con la identificación de la sesión. Pero si usa una ID de sesión lo suficientemente larga, realmente no hay necesidad. Si opta por la solución de ID de usuario, recuerde esto:

  • Obviamente, debe verificar el lado del servidor de ID de usuario y no confiar ciegamente en el cliente.
  • Supongamos que el pirata informático conoce todas las ID de usuario. Eso significa que el ID de sesión todavía debe ser largo y aleatorio.
respondido por el Anders 14.04.2018 - 23:10
fuente

Lea otras preguntas en las etiquetas