¿Qué es un session ID?

Imagina un gran palacio de congresos en el que se organizan diferentes eventos. Si has decidido asistir a una conferencia determinada, recogerás tu tarjeta identificativa o credencial de participante, que te permitirán entrar en la sala de reuniones correspondiente. Es decir, que para poder entrar se te proporciona un distintivo que te relaciona como persona con el evento en cuestión. El palacio de congresos sería el servidor, el evento en cuestión sería la dirección web y tu credencial de participante, tu identificador de sesión, en inglés, session ID.

Con este identificador de sesión, un visitante de una página web se identifica de forma individual durante el tiempo que pase en esa página y obtiene un distintivo electrónico asignado por el servidor. Otros términos para este identificador de sesión son session ID, o ID de sesión. En esta guía te explicamos detalladamente cómo transcurre una sesión de este tipo cuando se visita una página web y en qué contexto se utilizan los session ID.

¡Dominio GRATIS!

¡Consigue tu dominio gratis con IONOS!

Simple
Seguro
Asistencia 24/7

¿Dónde y para qué se utiliza un session ID?

Un session ID es una herramienta tecnológica para identificar de forma exclusiva a un usuario de una página web y asignarlo a una sesión. El session ID permite acceder a los datos de la última sesión del usuario. Estos se almacenan en el servidor de la página web correspondiente. El ID es una secuencia de caracteres numéricos. Por ejemplo, la siguiente secuencia de caracteres de un session ID con 32 caracteres se ha generado y emitido con PHP:

<?php
session_start();
  echo "El session ID es:". session_id();
  $sid=session_id(); //crea una variable con el ID de la sesión
?>

Si tienes tu propio espacio web con acceso FTP, puedes probarlo fácilmente con este código de tres líneas. Para esta sesión en particular se genera como consulta de prueba “El session ID es: 84266fdbd31d4c2c6d0665f7e8380fa3”.

Ese valor se transfiere del servidor al usuario cuando se consulta el contenido y asigna los contenidos correspondientes de la última sesión guardados en el servidor. El usuario y sus datos personales permanecen en el anonimato; simplemente se determina que el usuario que accede a la página es el mismo. Si falta ese identificador, el servidor evalúa una consulta como nueva y emite un nuevo session ID.

¿Para qué sirve todo esto? Los identificadores de sesión cumplen una función muy importante en el eCommerce. El session ID se utiliza, por ejemplo, para asignar al usuario el contenido de una cesta o del último artículo que ha visto en una tienda en línea. Esto contribuye a la comodidad del usuario y a la mejora de la llamada usabilidad web. Los datos almacenados temporalmente en la caché de las páginas web visitadas pueden utilizarse para identificar el contenido que se ha consultado. El mismo método también cumple otra función importante: con esta información (el identificador de sesión) se puede mostrar publicidad (banners, ventanas emergentes, enlaces, etc.) que probablemente sean de especial interés para el usuario, lo que se traduce en un mayor índice de respuesta.

Funcionamiento de un session ID

El servidor genera un session ID al principio de cada sesión, lo transmite al navegador con la solicitud del usuario y lo almacena allí. El servidor web guarda todos los datos asociados a esa sesión en un directorio especialmente creado para ello en el disco duro del servidor. Suele ser un directorio temporal “.../tmp”. Además del identificador de sesión, los datos que se almacenan allí también incluyen otros contenidos, como un identificador de usuario y, si se requiere en la página web, los artículos que contiene la cesta de la compra. Dicho archivo tiene, por ejemplo, el siguiente contenido:

/tmp/sess_84266fdbd31d4c2c6d0665f7e8380fa3
UserID|i:1142;MyCart|a:2:{i:0;s:8:"Item_Nr01";i:1;s:8:"Item_Nr02";}

En el siguiente apartado explicamos cómo funcionan las dos tecnologías que se utilizan principalmente para transmitir el session ID.

¿Cómo llega el session ID al usuario y viceversa?

Hay dos maneras diferentes de transferir un session ID.

Transferir un session ID a través de URI

Tras el primer acceso a una página web, las solicitudes posteriores de un usuario se ejecutan pinchando en enlaces o enviando formularios. Una vez emitido el identificador de sesión asignado, este modifica el URI añadiendo el identificador de sesión como variable al URI. El enlace tiene este aspecto con la variable $sid anteriormente definida:

<a href="https://www.dominioelegido.es/cart.php?sid=$sid">www.dominioelegido.es</a>

Esto genera el siguiente enlace en el navegador:

https://www.dominioelegido.es/cart.php?sid=84266fdbd31d4c2c6d0665f7e8380fa3

Una posible alternativa consiste en establecer el identificador de sesión como ruta:

<a href="https://www.dominioelegido.es/$sid/cart.php">www.dominioelegido.es</a>

Con ello se obtiene el enlace modificado en el navegador tal como se muestra a continuación:

https://www.dominioelegido.es/84266fdbd31d4c2c6d0665f7e8380fa3/cart.php

El servidor se configura de tal manera que siempre añade el session ID como ruta en la solicitud correspondiente del usuario y, por lo tanto, puede llevar a cabo la identificación.

Esto también se puede realizar con los campos del formulario, en los que el session ID se “empaqueta” una vez generado en un campo del formulario oculto.

<form method="post" action="/ejecutar_acción"></form>
	<input type="text" name="NrCliente">
	<input type="hidden" name="sessionId" value="$sid">
	< … >

El session ID se vuelve a transferir al servidor utilizando el método POST especificado. Se identifica la sesión que pertenece al usuario actual.

Transferir un session ID a través de un encabezado HTTP

Aquí es donde entran en juego las cookies. Las cookies son (como puedes leer desde hace un tiempo en casi todas las páginas web) pequeños archivos de texto. Se trata de una extensión del protocolo de transferencia de hipertexto (HTTP). Estos archivos de texto se almacenan localmente en el ordenador del usuario y contienen el session ID. Con cada nueva solicitud al servidor, el contenido de estas cookies de sesión se transfiere al servidor, que a su vez también ha almacenado temporalmente el identificador de sesión. Si el contenido de las cookies del usuario y el session ID en el servidor coinciden, se ejecuta la consulta.

Nota

De acuerdo con las directrices del Reglamento General de Protección de Datos, desde mayo de 2018, las cookies de sesión no se verán afectadas por las reglas de opt-in en la mayoría de los casos. Por lo tanto, no es necesario solicitar activamente el permiso para estas cookies especiales, aunque esto no exime de indicarlo en un aviso.

El uso de estos archivos puede constatarse, por ejemplo, en el hecho de que, una vez que se introducen los datos del formulario, no es necesario escribirlos de nuevo en el campo correspondiente cuando se accede al formulario de manera reiterada. Ya con la primera letra, los datos introducidos anteriormente aparecen como sugerencia.

¿En qué medida son seguros los session ID?

En general, los session ID no son garantía de una navegación segura en Internet. Si se tienen los conocimientos de programación necesarios, se puede secuestrar el contenido que no se ve durante la sesión. Este procedimiento se llama “secuestro de sesión”.

Los identificadores de sesión que llegan al usuario a través de las cookies de sesión y se almacenan en su ordenador se eliminan automáticamente en cuanto se cierra el navegador por completo. Sin embargo, para ello, no basta con cerrar una pestaña abierta del navegador. Por lo tanto, las cookies de sesión, a diferencia de las cookies almacenadas permanentemente o durante más tiempo, no representan un mayor riesgo para la seguridad.