Cómo evitar compartir sesiones dentro de la misma red

-2

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.

    
pregunta user3551863 23.04.2014 - 09:36
fuente

2 respuestas

1
  

¿Hay alguna forma de evitarlo?

Sí, podría tener una clave de sesión sucesiva. es decir, el servidor generará un nuevo ID de sesión para almacenar en la cookie cada número de solicitudes n . El encabezado Set-Cookie solo se enviará una vez, por lo que si hay dos navegadores registrados en la misma sesión, uno de ellos usará la sesión anterior, no válida. Podría tener una pequeña superposición en la que ambas sesiones sean válidas para evitar problemas con las solicitudes de recursos que el navegador aún no ha solicitado (por ejemplo, una solicitud AJAX que se acaba de enviar en espera de una conexión, mientras que el servidor ha respondido con una nueva ID al solicitud de la página principal). Esto proporciona un buen equilibrio entre la facilidad de uso y el cumplimiento de su requisito de sesión única, ya que el navegador que no recibe la nueva cookie se desconectará.

Otra forma de hacer esto es ir por un método más estricto, como lo emplean algunos bancos. En lugar de almacenar el ID de sesión en una cookie, se almacena en la propia página. Esto también garantiza que el usuario siga una ruta establecida a través de su sitio y no pueda saltar a las páginas fuera de secuencia. La forma en que funciona es que hay un campo oculto dentro de la página y cada acción de navegación es un HTTP POST a la página siguiente. p.ej. podría tener un solo controlador en https://www.example.com/loggedInAction y cada formulario se enviará por correo a: -

<form method="post" action="https://www.example.com/loggedInAction">
  <input type="hidden" name="requestId" value="123456" />
  <input type="hidden" name="action" value="navigateToMyAccountPage" />
</form>

La idea aquí es que la ID de solicitud se regenera después de cada acción de navegación, y el servidor utiliza esta ID de solicitud para realizar un seguimiento de cada sesión. El intercambio de sesiones no es posible ya que la ID se almacena en el formulario en lugar de la cookie, aunque se puede combinar con una cookie si desea mantener la ID de la sesión y la ID de la solicitud por separado. Si otro usuario copió el ID de solicitud y editó su solicitud, solo el primer usuario podría continuar ya que cada ID de solicitud caduca una vez que se usa. Este enfoque también evitará el uso del botón Atrás en el sitio, y es realmente un enfoque que debe diseñarse en el sistema desde el principio.

    
respondido por el SilverlightFox 24.04.2014 - 10:56
fuente
0

Las cookies tienen una opción para forzar el cifrado. Simplemente agregue secure; al encabezado de la cookie:

Set-Cookie: mycookie=somevalue; path=/securesite/; Expires=12/12/2010; secure; httpOnly;

httpOnly; protege la cookie de JavaScript.

Consulte ¿Cómo puedo comprobar que mis cookies solo se envían a través de https cifrados y no http?

También tenga en cuenta que la IP de los usuarios podría cambiar durante la sesión podría ser normal. Dispositivo móvil que cambia a WLAN o después de una desconexión de 24 horas.

    
respondido por el PiTheNumber 23.04.2014 - 09:52
fuente

Lea otras preguntas en las etiquetas