Repasemos esto:
Las cookies y las sesiones son ambas formas de preservar el estado de la aplicación entre las diferentes solicitudes que realiza el navegador. Es gracias a ellos que, por ejemplo, no necesita iniciar sesión cada vez que solicita una página en StackOverflow .
Galletas
Las cookies son pequeños bits de datos, (máximo de 4 KB de longitud), que contienen datos en pares clave = valor:
name=value
Estos se establecen mediante JavaScript o mediante el servidor mediante un encabezado HTTP .
Las cookies tienen una fecha de caducidad establecida, por ejemplo, usando encabezados HTTP:
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
Lo que haría que el navegador estableciera una cookie denominada name2
con un valor de value2
, que caducaría en unos 9 años.
Las cookies se consideran muy inseguras porque el usuario puede manipular fácilmente su contenido. Es por eso que siempre debe validar los datos de las cookies . No asuma que lo que obtiene de una cookie es necesariamente lo que espera.
Las cookies se utilizan generalmente para preservar el estado de inicio de sesión, donde un nombre de usuario y un hash especial se envían desde el navegador, y el servidor los compara con la base de datos para aprobar el acceso.
Las cookies también se utilizan a menudo en la creación de sesiones .
Sesiones
Las sesiones son ligeramente diferentes. Cada usuario obtiene un ID de sesión , que se envía de vuelta al servidor para su validación, ya sea por cookie o por variable GET .
Las sesiones suelen ser de corta duración, lo que las hace ideales para guardar un estado temporal entre aplicaciones. Las sesiones también caducan una vez que el usuario cierra el navegador.
Las sesiones se consideran más seguras que las cookies porque las propias variables se guardan en el servidor . Así es como funciona:
- El servidor abre una sesión (establece una cookie a través del encabezado HTTP)
- El servidor establece una variable de sesión.
- Página de cambios de cliente
- El cliente envía todas las cookies, junto con el ID de sesión del paso 1.
- El servidor lee el ID de sesión de la cookie.
- El servidor coincide con el ID de sesión de una lista en una base de datos (o memoria, etc.).
- El servidor encuentra una coincidencia, lee las variables que ahora están disponibles en
$_SESSION
superglobal.
Si PHP no encuentra una coincidencia, iniciará una nueva sesión y repetirá los pasos del 1 al 7.
Puede almacenar información confidencial en una sesión porque se guarda en el servidor, pero tenga en cuenta que la identificación de la sesión aún puede ser robada si el usuario, digamos, inició sesión a través de una red WiFi insegura. (Un atacante puede olfatear las cookies y configurarlas como propias, no verá las variables en sí, pero el servidor identificará al atacante como el usuario).
Esa es la esencia. Puede obtener más información en el manual de PHP sobre ambos temas.