5 formas de reforzar la seguridad de tus sesiones en PHP

5 formas de reforzar la seguridad de tus sesiones en PHP

Seguridad
En un post anterior había mencionado cuáles son los riesgos a los que están sujetas las sesiones PHP. En este artículo voy a darte algunos tips para mejorar la seguridad de tus sesiones y dormir más tranquilo :) 1. Usa siempre HTTPS La mejor forma de reforzar la seguridad de tus aplicaciones (No sólo de las sesiones) es utilizar tráfico cifrado, de esta forma, aún si alguien logra capturar el tráfico le será virtualmente imposible leer el contenido. Puedes conseguir certificados gratuitos usando, por ejemplo, LetsEncrypt 2. Cambia el nombre de tu cookie de sesión El nombre por defecto de la cookie de sesión es PHPSESSID pero puedes cambiarlo usando session_name() o desde la configuración de php (La variable session.name). Al cambiar este dato harás más dificultoso para un atacante…
Leer más
¿Qué tan seguras son las sesiones de PHP?

¿Qué tan seguras son las sesiones de PHP?

Seguridad
Seguramente escuchaste alguna versión de estas preguntas: ¿Es posible que alguien modifique sus cookies, les otorgue diferentes privilegios o inicie sesión como un usuario diferente? ¿Puede alguien robar las variables mientras están guardadas en el lado del servidor? ¿Que tan posible es que alguien te copie una session para usarla en su navegador? Una de nuestras principales preocupaciones como desarrolladores de software es la posibilidad de que algún hacker pueda robar información que los usuarios han confiado a nuestras aplicaciones. Si eso llegara a suceder nuestros clientes podrían verse en serias dificultades (y por lo tanto, nosotros también). Existen muchos modos en que un atacante puede colarse en nuestros sistemas y, lamentablemente, las sesiones no están exentas de riesgos. Para qué sirven las sesiones en PHP Las sesiones de PHP…
Leer más
Cómo armar un carrito de compras con PHP

Cómo armar un carrito de compras con PHP

Cómo hacer para...
Tema popular si los hay, ¿cierto? :) Muchos clientes se acercan a cualquier desarrollador con la idea de agregar a su sitio un "carrito de compras" pero, cuando indagamos un poco más vemos que el tema no es tan simple. Por ejemplo: ¿sirve de algo el carrito de compras sin la posisbilidad de realizar el pago al final? Pero bueno, para no hacer un post enorme, comencemos por la parte del carrito propiamente dicho y dejemos el tema de los pagos para otro. Qué puede hacerse con un carrito de compras El carrito de compras es un espacio donde un visitante puede llevar registro de los productos que desea comprar. Desde el punto de vista técnico/funcional, debe ser posible: Ingresar productosQuitar productosVer los productos existentesConfirmar la compra Para poder ingresar…
Leer más
Cómo definir la configuración de la sesión en Symfony

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

Cómo hacer para...
  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. El nombre de la cookie El tiempo de duración 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…
Leer más
Cómo evitar el auto-logout en una aplicación web hecha en PHP

Cómo evitar el auto-logout en una aplicación web hecha en PHP

Cómo hacer para...
En un proyecto que hice para un cliente me sucedió algo que no había previsto: un formulario dinámico resultó muy largo para la persona que tenía que realizar la carga y, cuando terminó el sistema la deslogueó automáticamente y perdió su trabajo :( Analizando un poco el problema me di cuenta de que la sesión había expirado a pesar de que el usuario estaba interactuando con el sistema... sólo que no se estaba produciendo ninguna comunicación cliente-servidor, ya que toda la acción estaba pasando del lado cliente. La solución que encontré fue diseñar un mecanismo de tipo keepAlive de modo de avisar al servidor que todavía había actividad del lado del cliente (¡y pedir por favor que no dejen afuera!). Lo primero que hice entonces fue agregar este pequeño código…
Leer más