Cómo definir la configuración de la sesión en Symfony

Home / Cómo hacer para... / Cómo definir la configuración de la sesión en Symfony

Ante todo, una aclaración:

PHP maneja las sesiones a través de cookies (Antiguamente también se podía propagar el ID de sesión vía URL, aunque es una práctica muy poco segura y, sinceramente, hace mucho que no lo veo).

Bien, ahora… ¿qué cosas podrías querer cambiar de la configuración de la sesión? Varias.

  1. El nombre de la cookie
  2. El tiempo de duración
  3. El lugar donde se almacena la información del lado del servidor

Sobre la segunda y la tercera, acá tenés un ejemplo de por qué querrías hacerlo 🙂

Respecto de la primera, más que nada se trata de un tema de seguridad. Fijate esta captura de pantalla de la consola del navegador:

El nombre PHPSESSID es el nombre por defecto que se le asigna a la cookie de sesión de una aplicación hecha en PHP, eso significa que, si te encontrás con una cookie con este nombre es altamente probable (Por no decir seguro) que del otro lado se encuentre una aplicación desarrollada en PHP.

Ese tipo de información es super útil para un atacante, ya que al conocer qué software está corriendo el servidor se le facilita enormemente la tarea de buscar una forma de explotarlo…

Bien, ahora que te convencí de que es una buena idea cambiar el nombre de la cookie, te voy a mostrar cómo hacerlo en Symfony:

Es muy simple, se trata de agregar un par de líneas al archivo config.yml:

framework:
    session:
        # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
        handler_id:  session.handler.native_file
        save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"
        cookie_lifetime: 28800
        name: MIAPPSID

Se puede configurar todos los parámetros de la sesión mediante este mecanismo y después, por ejemplo, se puede modificar algunos valores para el entorno de desarrollo definiendo un archivo config_dev.yml con algo como:

imports:
    - { resource: config.yml }

framework:
    session:
        save_path:   "/var/lib/php/sessions"

Listo. Ahora tu aplicación es un poco menos vulnerable que antes 🙂

mchojrin

CEO at Leeway
Mauro es Lic. en Ciencias de la Computación.
Su carrera como docente de programación se inició en el año 1997 en la Escuela Técnica ORT.
Actualmente coordina el desarrollo de proyectos web en Leeway y los cursos dictados en la Leeway Academy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *