Imagina un gran palacio de congresos en el que se organizan di­fe­re­n­tes eventos. Si has decidido asistir a una co­n­fe­re­n­cia de­te­r­mi­na­da, recogerás tu tarjeta ide­n­ti­fi­ca­ti­va o cre­de­n­cial de pa­r­ti­ci­pa­n­te, que te pe­r­mi­ti­rán entrar en la sala de reuniones co­rre­s­po­n­die­n­te. Es decir, que para poder entrar se te pro­po­r­cio­na un di­s­ti­n­ti­vo 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 cre­de­n­cial de pa­r­ti­ci­pa­n­te, tu ide­n­ti­fi­ca­dor de sesión, en inglés, session ID.

Con este ide­n­ti­fi­ca­dor de sesión, un visitante de una página web se ide­n­ti­fi­ca de forma in­di­vi­dual durante el tiempo que pase en esa página y obtiene un di­s­ti­n­ti­vo ele­c­tró­ni­co asignado por el servidor. Otros términos para este ide­n­ti­fi­ca­dor de sesión son session ID, o ID de sesión. En esta guía te ex­pli­ca­mos de­ta­lla­da­me­n­te cómo tra­n­s­cu­rre una sesión de este tipo cuando se visita una página web y en qué contexto se utilizan los session ID.

Domain Name Re­gi­s­tra­tion
Proyecta tu marca con un gran dominio
  • Gratis SSL Wildcard para tra­n­s­fe­re­n­cias de datos más seguras
  • Gratis registro privado para más pri­va­ci­dad  

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

Un session ID es una he­rra­mie­n­ta te­c­no­ló­gi­ca para ide­n­ti­fi­car 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 co­rre­s­po­n­die­n­te. El ID es una secuencia de ca­ra­c­te­res numéricos. Por ejemplo, la siguiente secuencia de ca­ra­c­te­res de un session ID con 32 ca­ra­c­te­res 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á­ci­l­me­n­te con este código de tres líneas. Para esta sesión en pa­r­ti­cu­lar se genera como consulta de prueba “El session ID es: 84266fdbd31d4c2c6d0665f7e8380fa3”.

Ese valor se tra­n­s­fie­re del servidor al usuario cuando se consulta el contenido y asigna los co­n­te­ni­dos co­rre­s­po­n­die­n­tes de la última sesión guardados en el servidor. El usuario y sus datos pe­r­so­na­les pe­r­ma­ne­cen en el anonimato; si­m­ple­me­n­te se determina que el usuario que accede a la página es el mismo. Si falta ese ide­n­ti­fi­ca­dor, el servidor evalúa una consulta como nueva y emite un nuevo session ID.

¿Para qué sirve todo esto? Los ide­n­ti­fi­ca­do­res de sesión cumplen una función muy im­po­r­ta­n­te 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 co­n­tri­bu­ye a la comodidad del usuario y a la mejora de la llamada usa­bi­li­dad web. Los datos al­ma­ce­na­dos te­m­po­ra­l­me­n­te en la caché de las páginas web visitadas pueden uti­li­zar­se para ide­n­ti­fi­car el contenido que se ha co­n­su­l­ta­do. El mismo método también cumple otra función im­po­r­ta­n­te: con esta in­fo­r­ma­ción (el ide­n­ti­fi­ca­dor de sesión) se puede mostrar pu­bli­ci­dad (banners, ventanas eme­r­ge­n­tes, enlaces, etc.) que pro­ba­ble­me­n­te sean de especial interés para el usuario, lo que se traduce en un mayor índice de respuesta.

Fu­n­cio­na­mie­n­to 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 di­re­c­to­rio es­pe­cia­l­me­n­te creado para ello en el disco duro del servidor. Suele ser un di­re­c­to­rio temporal “.../tmp”. Además del ide­n­ti­fi­ca­dor de sesión, los datos que se almacenan allí también incluyen otros co­n­te­ni­dos, como un ide­n­ti­fi­ca­dor 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 ex­pli­ca­mos cómo funcionan las dos te­c­no­lo­gías que se utilizan pri­n­ci­pa­l­me­n­te para tra­n­s­mi­tir el session ID.

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

Hay dos maneras di­fe­re­n­tes de tra­n­s­fe­rir un session ID.

Tra­n­s­fe­rir un session ID a través de URI

Tras el primer acceso a una página web, las so­li­ci­tu­des po­s­te­rio­res de un usuario se ejecutan pinchando en enlaces o enviando fo­r­mu­la­rios. Una vez emitido el ide­n­ti­fi­ca­dor de sesión asignado, este modifica el URI añadiendo el ide­n­ti­fi­ca­dor de sesión como variable al URI. El enlace tiene este aspecto con la variable $sid an­te­rio­r­me­n­te 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 al­te­r­na­ti­va consiste en es­ta­ble­cer el ide­n­ti­fi­ca­dor de sesión como ruta:

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

Con ello se obtiene el enlace mo­di­fi­ca­do en el navegador tal como se muestra a co­n­ti­nua­ció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 co­rre­s­po­n­die­n­te del usuario y, por lo tanto, puede llevar a cabo la ide­n­ti­fi­ca­ción.

Esto también se puede realizar con los campos del fo­r­mu­la­rio, en los que el session ID se “empaqueta” una vez generado en un campo del fo­r­mu­la­rio 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 tra­n­s­fe­rir al servidor uti­li­za­n­do el método POST es­pe­ci­fi­ca­do. Se ide­n­ti­fi­ca la sesión que pertenece al usuario actual.

Tra­n­s­fe­rir un session ID a través de un en­ca­be­za­do 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 tra­n­s­fe­re­n­cia de hi­pe­r­te­x­to (HTTP). Estos archivos de texto se almacenan lo­ca­l­me­n­te 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 tra­n­s­fie­re al servidor, que a su vez también ha al­ma­ce­na­do te­m­po­ra­l­me­n­te el ide­n­ti­fi­ca­dor 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 di­re­c­tri­ces del Re­gla­me­n­to General de Pro­te­c­ció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 ac­ti­va­me­n­te el permiso para estas cookies es­pe­cia­les, aunque esto no exime de indicarlo en un aviso.

El uso de estos archivos puede co­n­s­ta­tar­se, por ejemplo, en el hecho de que, una vez que se in­tro­du­cen los datos del fo­r­mu­la­rio, no es necesario es­cri­bi­r­los de nuevo en el campo co­rre­s­po­n­die­n­te cuando se accede al fo­r­mu­la­rio de manera reiterada. Ya con la primera letra, los datos in­tro­du­ci­dos an­te­rio­r­me­n­te aparecen como su­ge­re­n­cia.

¿En qué medida son seguros los session ID?

En general, los session ID no son garantía de una na­ve­ga­ción segura en Internet. Si se tienen los co­no­ci­mie­n­tos de pro­gra­ma­ción ne­ce­sa­rios, se puede se­cue­s­trar el contenido que no se ve durante la sesión. Este pro­ce­di­mie­n­to se llama “secuestro de sesión”.

Los ide­n­ti­fi­ca­do­res de sesión que llegan al usuario a través de las cookies de sesión y se almacenan en su ordenador se eliminan au­to­má­ti­ca­me­n­te 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 di­fe­re­n­cia de las cookies al­ma­ce­na­das pe­r­ma­ne­n­te­me­n­te o durante más tiempo, no re­pre­se­n­tan un mayor riesgo para la seguridad.

Ir al menú principal