El comportamiento de estas funciones se ve afectado por la configuración de php.ini.
Dónde se puede realizar un ajuste de configuración.El sistema de administración de sesiones admite varias opciones de configuración que se pueden colocar en el fichero php.ini. Se dará una visión general breve.
session.save_handler
stringsession.save_handler
define el nombre del gestor que se usa para almacenar y recuperar información asociada con una sesión. Por defecto es files
. Observe que las extensiones individuales pueden registrar sus propios gestores save_handler
; los gestores registrados se pueden obtener a nivel de instalación consultando phpinfo(). Véase también session_set_save_handler(). session.save_path
stringsession.save_path
define el argumento que es pasado al gestor de almacenamiento. Si se elige el gestor de archivos por defecto, éste es la ruta donde los archivos son creados. Véase también session_save_path(). Hay un argumento opcional N
para esta directiva que determina el número de niveles de directorios por donde los archivos de sesión se desplegarán. Por ejemplo, establecerlo a '5;/tmp'
puede terminar en crear un archivo de sesión y ubicación como /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If
. Para usar N
se deben crear todos estos directorios antes de utilizarlo. Para realizar esto, existe un pequeño script tipo shell en ext/session que se llama mod_files.sh, con una versión de Windows llamada mod_files.bat. Observe también que si N
se usa y es más grande que 0 no se llevará a cabo la recolección de basura automática, vea una copia de php.ini para más información. También, si usa N
, asegúrese de encerrar session.save_path
entre "comillas" ya que el separador (;
) también se usa para comentarios en php.ini.
El módulo de almacenamiento de ficheros crea ficheros usando el modo 600 de forma predeterminada. Este valor se puede cambiar con el argumento opcional MODE
: N;MODE;/path
, donde MODE
es la representación octal del modo. Establecer MODE
no afecta al proceso umask.
Si se deja esta configuración para un directorio legilble por todo el mundo, tal como /tmp (por defecto), otros usuarios en el servidor pueden ser capaces de secuestrar sesiones obteniendo la lista de archivos de ese directorio.
Al emplear el argumento opcional de nivel de directorio N
, como está descrito arriba, observe que al utilizar un valor mayor que 1 o 2 no es apropiado para la mayoría de los sitios debido al gran número de directorios requeridos: por ejemplo, un valor de 3 implica que existen 64^3
directorios en el sistema de ficheros, lo que puede resultar en un gran despredicio de escpacio e inodos.
Utilice solamente N
con un valor mayor que 2 si está absolutamente seguro de que el sitio es lo suficientemente grande para requerirlo.
session.name
stringsession.name
specifica el nombre de la sesión que se usa como nombre de cookie. Sólo debería contener caracteres alfanuméricos. Por defecto es PHPSESSID
. Véase también session_name(). session.auto_start
boolsession.auto_start
especifica si el módulo de sesión inicia una sesión automáticamente cuando arranque una petición. Por defecto es 0
(deshabilitado). session.serialize_handler
stringsession.serialize_handler
define el nombre del manejador que se usa para serializar/deserializar datos. El formato de serialización de PHP (nombre php_serialize
), formatos de internos de PHP (nombre php
y php_binary
) y WDDX son admitidos (nombre wddx
). WDDX solamente está disponible si PHP está compilado con soporte para WDDX. php_serialize
usa internamente una función pura de serialización/deserialización y no tiene las limitaciones que tienen php
y php_binary
. Los gestores de serialización más antiguos no pueden almacenar índices numéricos ni de string que contengan caracters especiales (|
y !
) en $_SESSION. Use php_serialize
para evitar errores con índices numéricos o caracteres especiales al cierre del script. Lo predeterminado es php
. session.gc_probability
integersession.gc_probability
se usa junto con session.gc_divisor
para manejar la probabilidad de que la rutina de gc (garbage collection, recolección de basura) está iniciada. Por defecto es 1
. Véase session.gc_divisor para más detalles. session.gc_divisor
integersession.gc_divisor
junto con session.gc_probability
define la probabilidad de que el proceso de gc (garbage collection, recolección de basura) esté iniciado en cada inicialización de sesión. La probabilidad se calcula usando gc_probability/gc_divisor, p.ej. 1/100 significa que hay un 1% de probabilidad de que el proceso de GC se inicie en cada petición. session.gc_divisor
por defecto es 100
. session.gc_maxlifetime
integersession.gc_maxlifetime
especifica el número de segundos después de lo cual la información sea vista como 'basura' y potencialmente limpiada. La recolección de basura puede suceder durante el inicio de sesiones (dependiendo de session.gc_probability y session.gc_divisor). Nota: Si diferentes scripts tienen diferentes valores de
session.gc_maxlifetime
pero comparten la misma ubicación para almacenar la información de sesión, la información del script con el mínimo valor será limpiada. En este caso use esta directiva junto con session.save_path.
session.referer_check
stringsession.referer_check
contiene la subcadena para comprobar cada HTTP Referer. Si la Referencia fue enviada por el cliente y la subcadena no se encontró, el id de sesión embebido será marcado como no válido. Por defecto es una cadena vacía. session.entropy_file
stringsession.entropy_file
da una ruta a un recurso externo (archivo) que será usado como una fuente de entropía adicional en el proceso de creación del id de sesión. Ejemplos: /dev/random
o /dev/urandom
que están disponibles en la mayoría de sistemas Unix. Esta función está disponible en Windows. Si se establece session.entropy_length
a un valor que no sea cero hará que PHP use la Windows Random API como fuente entrópica. Nota: Eliminado en PHP 7.1.0.
session.entropy_file
usa de forma predeterminada/dev/urandom
o/dev/arandom
si están disponibles.
session.entropy_length
integersession.entropy_length
especifica el número de bytes que serán leídos desde el archivo especificado arriba. Por defecto es 32
. Eliminado en PHP 7.1.0. session.use_strict_mode
boolsession.use_strict_mode
especifica si el módulo usará el modo de id de sesión estricto. Si este modo está habilitado, el módulo no aceptará IDs de sesioines no inicializados. Si se envia desde el navegador un ID de sesión no inicializado, se envía un nuevo ID de sesión al navegador. Las aplicaciones están protegidas de la fijación de sesiones mediante la adopción de sesión con modo estricto. El valor predeterminado es 0
(deshabilitado). Nota: Es obligatoria habilitar
session.use_strict_mode
por seguridad general de sesión. Todos los sitios están advertidos de esto. Véase el código de ejemplo de session_create_id() para más detalles.
Si una sesión personalizada es registrada a través de la función session_set_save_handler() y esta no implementa SessionUpdateTimestampHandlerInterface::validateId(), ni proporciona el callback validate_sid
respectivamente, el modo strict session ID es deshabilitado, independientemente del valor de esta directiva. Observe que SessionHandlernoSessionHandler::validateId().
session.use_cookies
especifica si el módulo usará cookies para almacenar el id de sesión en la parte del cliente. Por defecto es 1
(habilitado). session.use_only_cookies
especifica si el módulo sólo usará cookies para almacenar el id de sesión en la parte del cliente. Habilitar este ajuste previene ataques que implican pasar el id de sesión en la URL. Por defecto es 1
(habilitado). session.cookie_lifetime
especifica el tiempo de vida en segundos de la cookie que es enviada al navegador. El valor 0 significa "hasta que el navegador se cierre". Por defecto es 0
. Véase también session_get_cookie_params() y session_set_cookie_params(). Nota: La marca de tiempo de caducidad se establece relativa a la hora del servidor, la cúal no es necesariamente la misma que la hora del navegador del cliente.
session.cookie_path
especifica la ruta a establecer en la cookie de sesión. Por defecto es /
. Véase también session_get_cookie_params() y session_set_cookie_params(). session.cookie_domain
especifica el dominio a establecer en la cookie de sesión. Por defecto es ninguno, significando el nombre de host del servidor que generó la cookie según la especificación de cookies. Véase también session_get_cookie_params() y session_set_cookie_params(). session.cookie_secure
especifica si las cookies deberían enviarse sólo sobre conexiones seguras. Por defecto es off
. Este ajuste fue añadido en PHP 4.0.4. Véase también session_get_cookie_params() y session_set_cookie_params(). Lax
y Strict
significan que la cookie no se enviará entre dominios para solicitudes POST; Lax
enviará la cookie para solicitudes GET entre dominios, mientras que Strict
no lo hará. session.cache_limiter
stringsession.cache_limiter
especifica el método de control de caché usado por páginas de sesión. Puede ser uno de los siguientes valores: nocache
, private
, private_no_expire
, o public
. Por defecto es nocache
. Vea también la documentación de session_cache_limiter() para informarse sobre lo que significan estos valores. session.cache_expire
integersession.cache_expire
especifica el tiempo de vida en minutos para las páginas de sesión examinadas, esto no tiene efecto para el limitador nocache. Por defecto es 180
. Véase también session_cache_expire(). session.use_trans_sid
boolsession.use_trans_sid
si está habilitado sid transparente o no. Por defecto es 0
(deshabilitado). Nota: La administración de sesiones basadas en URL tiene riesgos de seguridad adicionales comparada con la administración de sesiones basdas en cookies. Los usuarios pueden enviar una URL que contenga un ID de sesión activo a sus amigos mediante email o los usuarios pueden guardar una URL que contenga una ID de sesión en sus marcadores y acceder a su sitio siempre con el mismo ID de sesión, por ejemplo. Desde PHP 7.1.0, una ruta de URL completa, p.ej. https://php.net/, es manejada por la característa trans sid. Versiones anteriores de PHP manejaban únicamente rutas de URL relativas. Los 'hosts' objetivos de reescritura están definidos por session.trans_sid_hosts.
session.trans_sid_tags
especifica cuáles etiquetas HTML son reescritas para incluir el ID de sesión cuando está habilitado el soporte para SID transparente. Las predeterminadas son a=href,area=href,frame=src,input=src,form=
form
es una etiqueta especial. <input hidden="id_sesión" name="nombre_sesión">
se añade como variable de formulario. Nota: Antes de PHP 7.1.0, url_rewriter.tags se utilizaba para este propósito. Desde 7.1.0,
fieldset
ya no se considera una etiqueta especial.
session.trans_sid_hosts
stringsession.trans_sid_hosts
especifica los hosts que se reescriben para incluir el ID de sesión cuando el soporte para SID transparente está habilitado. El predeterminado es $_SERVER['HTTP_HOST']
Se pueden especificar varios hosts mediante ",", y no se permiten espacios entre hosts. P.ej. php.net,wiki.php.net,bugs.php.net
session.sid_length
intsession.sid_length
permite especificar la longitud de la cadena del ID de sesión. Esta longitud puede estar entre 22 y 256. El valor predeterminado es 32. Si es necesaria compatibilidad se puede especificar 32, 40, etc. Los ID de sesión más largos son más difíciles de adivinar. Se recomienda al menos 32 caracteres. Nota sobre la compatibilidad: Use 32 para session.hash_func
=0 (MD5) y session.hash_bits_per_character
=4, session.hash_func
=1 (SHA1) y session.hash_bits_per_character
=6. Use 26 para session.hash_func
=0 (MD5) y session.hash_bits_per_character
=5. Use 22 para session.hash_func
=0 (MD5) y session.hash_bits_per_character
=6. Se deben cofigurar valores INI para tener al menos 128 bits en ID de sesión. No olvide establecer el valor apropiado en session.sid_bits_per_character
, de lo contrario se tendrá un ID de sesión más débil.
Nota: Este ajuste se introdujo en PHP 7.1.0.
session.sid_bits_per_character
integersession.sid_per_character
permite especificar el número de bits en caracteres de ID de sesión codificados. Los valores posibles son '4' (0-9, a-f), '5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ","). El predeterminado es 4. Cuantos más bits, más fuerte es el ID de sesión. Se recomienda 5 para la mayoría de entornos. Nota: Este ajuste se introdujo en PHP 7.1.0.
session.hash_function
mixedsession.hash_function
permite especificar el algoritmo hash utilizado para generar los ID de sesión. '0' significa MD5 (128 bits) y '1' significa SHA-1 (160 bits). Es posible especificar cualquier algoritmo porporcionado por la extensión hash (si está disponible), como sha512
o whirlpool
. Una lista completa de los algoritmos soportados se puede obtener con la función hash_algos().
Nota: Eliminado en PHP 7.1.0.
session.hash_bits_per_character
integersession.hash_bits_per_character
permite definir cuántos bits son almacenados en cada carácter cuando se convierte la información hash binaria a algo legible. Los valores posibles son '4' (0-9, a-f), '5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ","). Nota: Eliminado en PHP 7.1.0
session.upload_progress.enabled
boolsession.upload_progress.cleanup
boolNota: Es muy recomendado mantener esta opción habilitada.
session.upload_progress.prefix
string$_POST[ini_get("session.upload_progress.name")]
para proporcionar un índice único. Por omisión su valor es "upload_progress_". session.upload_progress.name
string$_POST[ini_get("session.upload_progress.name")]
o no está disponible, el progreso de subida no será grabado. Por omisión su valor es"PHP_SESSION_UPLOAD_PROGRESS". session.upload_progress.freq
mixedsession.upload_progress.min-freq
integersession.lazy_write
boolsession.lazy_write
, cuando está establecida a 1, significa que los datos de sesión solamente son rescritos si cambian. El valor predeterminado es 1, habilitado. El progreso de subida no será registrado a no ser que session.upload_progress.enabled esté habilitado, y la variable $_POST[ini_get("session.upload_progress.name")] esté definida. Ver Session Upload Progress para más información de como funciona.