Estaba pensando en una situación para evitar el intercambio de sesiones o el secuestro, validando la IP que el usuario inició con la ip que accede a cualquier página después de iniciar sesión. Funcionó hasta que pensé que era posible cuando el usuario venía de otra red y alguien de la misma red copió (o secuestró) la cookie a otra máquina. Después de copiar una cookie de una sesión registrada en otra máquina, la otra máquina puede acceder a la aplicación sin iniciar sesión porque la identificación de la sesión es correcta y la IP (cuando sale a Internet) es la misma.
¿Hay alguna forma de evitarlo?
Estaba pensando en tener la cookie cifrada usando SSL por el servidor compartiendo la clave como lo hace para la conexión SSL. De esta manera, solo el cliente correcto tendría el valor de cookie correcto. (Aquí no estoy hablando de conexión con SSL sino de cifrar la cookie. La SSL se utilizará para cifrar el contenido de la forma habitual). No he encontrado nada sobre esto todavía.
Diría que la pregunta es más como "¿Cómo puedo crear una cookie cifrada en función de cada cliente y el servidor es el único que puede descifrar la cookie". Si simplemente lo cifro en el servidor, según mi clave de cifrado, será el mismo cifrado para cada usuario y se seguirá copiando.