Dreamhost, W3C Validator y PHPSESSID

Si estáis alojados en Dreamhost y estáis desarrollando una web con sesiones PHP os encontraréis con el problema de que al final de cada dirección URL, añade algo del tipo ?PHPSESSID=un_número_to_largo. Esto es bastante antiestético, además no es válido según el W3C. Para arreglaro, Davide Salerno nos propone una solución ingeniosa para evitar que compilar PHP nosotros mismos.

Lo traduzco directamente de su blog:

$ ssh tuusuario@tudominio.com
$ mkdir ~/tudominio.com/cgi-bin/
$ nano php_update

Añadimos lo siguiente a ese fichero:

#/bin/sh

CGIFILE="$HOME/tudominio.com/cgi-bin/php.cgi"
INIFILE="$HOME/tudominio.com/cgi-bin/php.ini"

cp /usr/local/bin/php "$CGIFILE"
cp /etc/php/php.ini "$INIFILE"

perl -p -i -e '
s/.*session\.use_only_coockies.*/session\.use_only_coockies = 1/;
s/.*session\.use_trans_sid.*/session\.use_trans_sid = 0/;
' "$INIFILE"

Ahora lo ejecutamos:

$ chmod +x php_update
$ ./php_update

Y por si cambian el fichero de configuración de PHP, nos haremos una tarea cron que se active cada semana:

$ crontab -e

Añadimos la siguiente línea y lo guardamos:

@weekly /home/tuusuario/php_update

Finalmente modificamos el archivo .htaccess de nuestro dominio para que use nuestros ficheros de configuración

AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi

Y ya tenemos solucionado el problema! :)

Editado: al hacer esto ha dejado de funcionar la función mail(), a ver si lo arreglo…
Editado 2: o se ha arreglado solo o he tocado algo del php.ini sin darme cuenta y funciona XD

3 comentarios en “Dreamhost, W3C Validator y PHPSESSID

  1. enlavin

    El mantener la sesión mediante parámetros GET en la url puede ser, aparte de feo, un problema de seguridad. Piensa que cualquier visitante que vaya a otra web desde la tuya a través de un enlace le va a dejar bien guardaico en el http-referer el identificador de sesión que estaba usando. Durante un rato la cuenta de ese usuario es vulnerable.

    La gente de Django, por ejemplo, decidieron no usar la url para transmitir las sesiones precisamente por eso.

    Me da a mi que eso explica en parte (pasando por alto la paranoia) por qué los típicos webmails no te dejan hacer click en un enlace directamente, si no que te llevan a un script suyo que hace de redirector y probablemente elimina información de sesión de la url para que el http-referer no te delate. Bueno, eso y saber qué enlaces pinchamos y cuales no :)

  2. lgs

    También hay que tener en cuenta que en el siglo XXI hay gente que no tiene las Cookies activadas y cuenta abominaciones de ellas.

    Tener la sesión en un parámetro de la URL es la única opción para estos paranoicos.

  3. Blaxter

    Tener las cookies desactivadas globalmente (desactivar cookies de terceros, aún…) es una burrada, estoy con Enlavin.

Los comentarios están cerrados.