La respuesta de tim sobre la entropía es perfecta en el tema de la fuerza bruta que obliga a sessionId.
Pero nota, hay formas más fáciles de robar la sesión. Por ejemplo, si emite la sesión a través de HTTPS (autenticación) pero luego se recupera a HTTP, ahora su sesión se expone en texto claro. Cualquier cosa que pase por HTTP se puede asumir que se grita en voz alta y abierta para todos los que están escuchando en la línea.
Un ataque dirigido puede engañar a un usuario para que haga clic en una URL HTTP al sitio web de destino y al intruso del atacante hasta que el usuario haga clic en la URL y envíe la sesión a través de HTTP. es por eso que debe establecer un indicador de seguridad para su sesión para asegurarse de que no se envíe a menos que esté a través de HTTPS.
Puede vincular la sesión a IP, pero tenga en cuenta que muchos usuarios pueden compartir la misma IP si están detrás de un NAT. Entonces no es realmente una gran solución de seguridad.
Incluso si tiene su sesión completa sobre SSL, aún las vulnerabilidades en el navegador pueden permitir el robo de la sesión; Los scripts de sitios cruzados pueden robar la sesión. Para estar seguro, debe solucionar todos estos problemas, pero al final del día, suponga que la sesión puede ser robada, y piense ahora qué?
Una solución avanzada para el secuestro de sesiones es el token de sincronización; de esta manera, cada vez que el navegador del cliente realiza una solicitud HTTP al servidor, el servidor envía un nuevo token suficientemente complejo al cliente como un valor de campo de formulario oculto, y el cliente debe enviar este valor en la siguiente solicitud como un forma oculta del valor. Si el cliente envía la sesión correcta (por ejemplo, robada de la cookie), pero no tiene el token de sincronización más reciente, entonces hay algo incorrecto. Esta solución también previene la falsificación de solicitudes entre sitios. Si tiene SSL, esta solución tampoco puede ser interrumpida por el hombre en el medio.