El comportamiento de estas funciones es afectado por la configuración en el archivo php.ini.
| Nombre | Por defecto | Cambiable | Historial de cambios |
|---|---|---|---|
| session.save_path | "" | INI_ALL |
|
| session.name | "PHPSESSID" | INI_ALL |
|
| session.save_handler | "files" | INI_ALL |
|
| session.auto_start | "0" | INI_PERDIR |
|
| session.gc_probability | "1" | INI_ALL |
|
| session.gc_divisor | "100" | INI_ALL |
|
| session.gc_maxlifetime | "1440" | INI_ALL |
|
| session.serialize_handler | "php" | INI_ALL |
|
| session.cookie_lifetime | "0" | INI_ALL |
|
| session.cookie_path | "/" | INI_ALL |
|
| session.cookie_domain | "" | INI_ALL |
|
| session.cookie_secure | "0" | INI_ALL |
Anterior a PHP 7.2.0, el valor por omisión era "". |
| session.cookie_httponly | "0" | INI_ALL |
Anterior a PHP 7.2.0, el valor por omisión era "". |
| session.cookie_partitioned | "0" | INI_ALL |
Disponible a partir de PHP 8.5.0. |
| session.cookie_samesite | "" | INI_ALL |
Disponible a partir de PHP 7.3.0. |
| session.use_strict_mode | "0" | INI_ALL |
|
| session.use_cookies | "1" | INI_ALL |
|
| session.use_only_cookies | "1" | INI_ALL |
Desactivar este ajuste está obsoleto a partir de PHP 8.4.0. |
| session.referer_check | "" | INI_ALL |
Definir un valor no vacío está obsoleto a partir de PHP 8.4.0. |
| session.cache_limiter | "nocache" | INI_ALL |
|
| session.cache_expire | "180" | INI_ALL |
|
| session.use_trans_sid | "0" | INI_ALL |
Activar este ajuste está obsoleto a partir de PHP 8.4.0. |
| session.trans_sid_tags | "a=href,area=href,frame=src,form=" | INI_ALL |
Disponible a partir de PHP 7.1.0. Modificar este ajuste está obsoleto a partir de PHP 8.4.0. |
| session.trans_sid_hosts | $_SERVER['HTTP_HOST'] |
INI_ALL |
Disponible a partir de PHP 7.1.0. Definir un valor no vacío está obsoleto a partir de PHP 8.4.0. |
| session.sid_length | "32" | INI_ALL |
Disponible a partir de PHP 7.1.0. Modificar esta directiva está obsoleto a partir de PHP 8.4.0. |
| session.sid_bits_per_character | "4" | INI_ALL |
Disponible a partir de PHP 7.1.0. Modificar esta directiva está obsoleto a partir de PHP 8.4.0. |
| session.upload_progress.enabled | "1" | INI_PERDIR |
|
| session.upload_progress.cleanup | "1" | INI_PERDIR |
|
| session.upload_progress.prefix | "upload_progress_" | INI_PERDIR |
|
| session.upload_progress.name | "PHP_SESSION_UPLOAD_PROGRESS" | INI_PERDIR |
|
| session.upload_progress.freq | "1%" | INI_PERDIR |
|
| session.upload_progress.min_freq | "1" | INI_PERDIR |
|
| session.lazy_write | "1" | INI_ALL |
|
| session.hash_function | "0" | INI_ALL |
Eliminado a partir de PHP 7.1.0. |
| session.hash_bits_per_character | "4" | INI_ALL |
Eliminado a partir de PHP 7.1.0. |
| session.entropy_file | "" | INI_ALL |
Eliminado a partir de PHP 7.1.0. |
| session.entropy_length | "0" | INI_ALL |
Eliminado a partir de PHP 7.1.0. |
El sistema de sesiones dispone de un gran número de directivas en el archivo php.ini. A continuación se presenta una descripción:
session.save_handler
string
Define el nombre del controlador
de sesiones que se utiliza para almacenar y leer
los datos. Por omisión, es el sistema integrado
por archivos: files. Tenga en cuenta que las
extensiones individuales pueden registrar
sus propios controladores de sesiones; los controladores registrados
pueden obtenerse para cada instalación consultando
phpinfo(). Consulte también
session_set_save_handler().
session.save_path
string
Define la ruta que debe pasarse al controlador de guardado. Si decide elegir el controlador por omisión (por archivos), este argumento se utilizará como carpeta de guardado de las sesiones. Consulte también session_save_path().
Existe un argumento opcional N para esta directiva que determina
la profundidad de directorios donde su archivo de sesión será almacenado.
Por ejemplo, si define '5;/tmp', su archivo
estará ubicado en /tmp/4/b/1/e/3/sess_4b1e384ad74619bd212e236e52a5a174If.
Si desea utilizar N, debe crear
todos estos directorios antes de usarlos. Existe un pequeño script shell en
ext/session para realizar estas creaciones y se denomina
mod_files.sh, y su versión Windows lleva el nombre
mod_files.bat. Tenga en cuenta también que si N
se utiliza y es superior a 0, entonces la rutina automática gc (recolección de basura)
no se ejecutará; consulte una copia de php.ini para más información.
Asimismo, si utiliza N, asegúrese de rodear
session.save_path con "comillas dobles" ya que el separador
(;) también se utiliza para los comentarios en
php.ini.
El módulo de almacenamiento de archivos crea archivos utilizando el modo
600 por omisión. Este modo por omisión puede modificarse utilizando el argumento
opcional MODE: N;MODE;/path donde
MODE es la representación octal del modo.
El hecho de definir el argumento MODE no afecta al proceso
umask.
Si esta opción se configura con una carpeta accesible en lectura para todos, como /tmp (por omisión), otros usuarios podrán explotar estas sesiones obteniendo la lista de archivos en esta carpeta.
Al utilizar el argumento opcional N
que determina la profundidad de directorios, como se indicó anteriormente, tenga en cuenta
que el uso de un valor superior a 1 o 2 no es apropiado
para la mayoría de los sitios debido al número de directorios requeridos: por
ejemplo, un valor de 3 implica que
(2 ** session.sid_bits_per_character) ** 3 directorios
existen en el sistema de archivos lo que implica potencialmente un
gran número de espacios y inodos desperdiciados.
No utilice un valor de N superior a 2 a menos
que esté seguro de que es necesario para su sitio.
session.name
string
Especifica el nombre de la sesión,
que se utilizará como nombre de cookie. Solo debe contener
caracteres alfanuméricos. Por omisión, es
PHPSESSID.
Consulte también session_name().
session.auto_start
bool
Especifica si el módulo
de sesiones debe iniciarse automáticamente al comienzo de
cada script PHP. Por omisión, es 0
(desactivado).
session.serialize_handler
string
Define el nombre del controlador que se utiliza para serializar y
deserializar los datos. El formato de serialización PHP
(llamado php_serialize), los formatos internos a PHP
(llamados php y php_binary)
y WDDX (llamado wddx) son soportados. WDDX solo
está disponible, si PHP ha sido compilado con la opción
WDDX. php_serialize
utiliza las funciones de serialización/deserialización en interno,
y no tiene las limitaciones que php y php_binary
tienen. Los antiguos controladores de serialización no pueden almacenar
índices numéricos, ni índices en forma de cadenas que contengan
caracteres especiales (| y !) en
$_SESSION. Utilice php_serialize para evitar este
tipo de error al final del script. Por omisión, es php.
session.gc_probability
int
Especifica la probabilidad, expresada en porcentaje, en conjunción de
session.gc_divisor, que la rutina gc
(garbage collection)
se inicie en cada solicitud.
El valor por omisión es 1. Debe ser superior o igual a 0. Consulte
session.gc_divisor para más detalles.
session.gc_divisor
int
session.gc_divisor en conjunción con
session.gc_probability define la probabilidad que la rutina gc
(garbage collection) se inicie en cada inicio de sesión.
La probabilidad se calcula utilizando gc_probability/gc_divisor, por
ejemplo 1/100 significa que hay un 1% de probabilidad de que la rutina gc
se inicie en cada solicitud. El valor por omisión es 100.
Debe ser superior a 0.
session.gc_maxlifetime
int
Especifica la duración de vida de los datos en el servidor, en número
de segundos. Después de este tiempo, los datos serán considerados
obsoletos, y pueden potencialmente ser eliminados.
Los datos pueden volverse obsoletos al inicio de la sesión
(siguiendo session.gc_probability y
session.gc_divisor).
El valor por omisión es 1440 (24 minutos).
Nota:
Si diferentes scripts tienen valores diferentes de
session.gc_maxlifetimepero comparten el mismo lugar para almacenar los datos de sesión, entonces, el script con el valor más pequeño borrará los datos. En este caso, utilice esta directiva conjuntamente con session.save_path.
session.referer_check
string
Contiene una subcadena que desea encontrar en todos los encabezados HTTP Referer. Si este encabezado ha sido enviado por el cliente y la subcadena no ha sido encontrada, el identificador de sesión será considerado inválido. Por omisión, esta opción es una cadena vacía.
Definir session.referer_check con un valor no vacío
está obsoleto a partir de PHP 8.4.0.
session.entropy_file
string
Es un camino hasta
una fuente externa (un archivo), que será utilizada como fuente
adicional de entropía para la creación del identificador
de sesión. Ejemplos válidos son /dev/random y
/dev/urandom, que están disponibles en
muchos sistemas Unix.
Esta funcionalidad es soportada en Windows.
El hecho de definir session.entropy_length a un valor
diferente de cero hará que PHP utilice la API aleatoria de Windows como
fuente de entropía.
Nota:
Eliminado en PHP 7.1.0.
session.entropy_filevale por omisión/dev/urandomo/dev/arandomsi está disponible.
session.entropy_length
int
Especifica el número de bytes
que serán leídos en el archivo definido anteriormente. Por omisión 32.
Eliminado en PHP 7.1.0.
session.use_strict_mode
bool
session.use_strict_mode especifica si el módulo debe
utilizar el modo de identificador de sesión estricto. Si este modo está activado,
el módulo no aceptará identificadores de sesión no inicializados.
Si un identificador de sesión no inicializado es enviado desde el navegador,
un nuevo identificador de sesión será enviado al navegador. Las
aplicaciones están protegidas de la fijación de sesiones mediante el uso
del modo estricto de sesiones.
Por omisión, vale 0 (desactivado).
Nota:
Activar
session.use_strict_modees obligatorio para la seguridad general de las sesiones. Se recomienda activarlo para todos los sitios. Consulte el ejemplo de código de session_create_id() para más detalles.
Si un controlador de sesiones registrado mediante la función
session_set_save_handler() no implementa
SessionUpdateTimestampHandlerInterface::validateId(),
ni proporciona la función de devolución de llamada validate_sid, respectivamente,
el modo de identificador de sesión estricto estará efectivamente desactivado, siguiendo el valor
de esta directiva. Tenga en cuenta que SessionHandler no implementa el método SessionHandler::validateId().
Especifica si el módulo utilizará
cookies para almacenar el id de sesión en el lado del cliente.
Por omisión, vale 1, es decir, activo.
Especifica si el módulo
debe utilizar solo cookies
para almacenar los identificadores de sesiones en el lado del navegador.
Al activarlo, evitará ataques que utilicen
identificadores de sesiones en las URL.
Por omisión, vale 1 (activado).
Desactivar session.use_only_cookies está obsoleto
a partir de PHP 8.4.0.
Especifica la duración de vida de la cookie en segundos. El valor de
0 significa: "Hasta que se cierre el navegador".
El valor por omisión es 0. Consulte también
session_get_cookie_params() y
session_set_cookie_params().
Nota:
El timestamp que representa la duración de vida de la cookie se define en relación con el tiempo del servidor, que no es necesariamente el mismo que el tiempo del navegador.
Especifica el camino utilizado
al crear la cookie. Por omisión, vale /.
Consulte también
session_get_cookie_params() y
session_set_cookie_params().
Especifica el dominio utilizado al crear la cookie. Por omisión, no vale nada, lo que significa que es el nombre del host del servidor que genera la cookie de acuerdo con las especificaciones sobre cookies. Consulte también session_get_cookie_params() y session_set_cookie_params().
Especifica que las cookies solo deben emitirse en
conexiones seguras. Con esta opción definida
en on, las sesiones solo funcionan con conexiones HTTPS.
Si está definida en off, entonces las sesiones funcionan con las conexiones HTTP y
HTTPS. Por omisión, está definida en off.
Consulte también
session_get_cookie_params() y
session_set_cookie_params().
Marca la cookie para que solo sea accesible a través del protocolo HTTP. Esto significa que la cookie no será accesible por los lenguajes de script, como Javascript. Esta configuración permite limitar ataques como los ataques XSS (aunque no es soportado por todos los navegadores).
Marca la cookie como particionada (CHIPS), lo que significa que la cookie quedará aislada en un contexto de origen (first-party). Esta configuración ayuda a mitigar el rastreo entre sitios (aunque no está soportada por todos los navegadores).
Si se habilita, también debe habilitarse session.cookie_secure; en caso contrario la cookie de sesión no se enviará y se emitirá una advertencia.
Permite que una cookie no sea enviada por el servidor con solicitudes entre sitios
(cross-site). Esta afirmación permite a los agentes de usuario mitigar los riesgos
de fuga de información de origen del sitio (cross-origin), y proporciona protección contra los
ataques de falsificación de solicitudes entre sitios (cross-site request forgery). Tenga en cuenta que esto no es soportado por todos los navegadores.
Un valor vacío significa que ningún atributo SameSite será definido.
Lax y Strict significa que la cookie
no será enviada para solicitudes POST entre dominios; Lax
enviará la cookie para solicitudes GET entre dominios, mientras que Strict
no lo hará.
session.cache_limiter
string
Especifica el tipo de control de caché utilizado para las páginas
con sesiones. Los valores posibles son :
nocache, private,
private_no_expire, public.
Por omisión, vale nocache.
Consulte también session_cache_limiter() para
conocer el significado de estos valores.
session.cache_expire
int
Especifica la duración de
vida de las páginas de sesión en caché, en minutos. Esta opción no tiene
efecto con el limitador nocache. Por omisión, vale
180 (3 horas).
Consulte también
session_cache_expire().
session.use_trans_sid
bool
Especifica si el soporte del SID es transparente o no. Por omisión vale 0
(desactivado).
Activar session.use_trans_sid está obsoleto
a partir de PHP 8.4.0.
Nota:
El sistema de gestión de sesiones por URL representa un riesgo adicional de seguridad: un usuario puede enviar su URL con el identificador de sesión por correo electrónico a un amigo, o bien ponerla en sus marcadores. Esto difundirá entonces el identificador de sesión.
Desde PHP 7.1.0, la URL completa, por ejemplo https://php.net/, es gestionada por la funcionalidad. Anteriormente, PHP gestionaba solo el camino relativo únicamente. El host objetivo de la reescritura está definido por session.trans_sid_hosts.
session.trans_sid_tags especifica las etiquetas HTML que
son reescritas para incluir el ID de sesión cuando el soporte del SID
transparente está activado. Por omisión
a=href,area=href,frame=src,form=
form es una etiqueta especial. La variable de formulario
<input hidden="session_id" name="session_name">
es añadida.
Modificar session.trans_sid_tags respecto a su valor
por omisión está obsoleto a partir de PHP 8.4.0.
Nota:
Antes de PHP 7.1.0, url_rewriter.tags era utilizado para este propósito. Desde PHP 7.1.0,
fieldsetya no es considerado como una etiqueta especial.
session.trans_sid_hosts
string
session.trans_sid_hosts especifica los hosts que son
reescritos para incluir el ID de sesión cuando el soporte del SID transparente
está activado. Por omisión $_SERVER['HTTP_HOST']. Varios
hosts pueden ser especificados separados por ",", ningún espacio está permitido
entre los hosts. Por ejemplo:
php.net,wiki.php.net,bugs.php.net
Definir session.trans_sid_hosts con un valor no
vacío está obsoleto a partir de PHP 8.4.0.
session.sid_length
int
session.sid_length permite especificar la longitud
de la cadena de ID de sesión. La longitud del ID de sesión puede ser
comprendida entre 22 y 256.
El valor por omisión es 32. Un ID de sesión más largo es más difícil de adivinar.
Modificar session.sid_length respecto a su valor por
omisión está obsoleto a partir de PHP 8.4.0.
Nota:
Disponible a partir de PHP 7.1.0.
session.sid_bits_per_character
int
session.sid_bits_per_character permite especificar el
número de bits en el carácter codificado en el ID de sesión. Los valores
posibles son
'4' (0-9, a-f), '5' (0-9, a-v), y '6' (0-9, a-z, A-Z, "-", ",").
El valor por omisión es 4. Un número de bits mayor resulta en un ID de sesión más fuerte.
Modificar session.sid_bits_per_character respecto a su
valor por omisión está obsoleto a partir de PHP 8.4.0.
Nota:
Disponible a partir de PHP 7.1.0.
session.hash_function
mixed
session.hash_function permite especificar la función
de hash a utilizar para generar los identificadores de sesión. '0' significa
MD5 (128 bits) y '1' significa SHA-1 (160 bits).
También es posible especificar cualquier algoritmo proporcionado por la
extensión hash
(si está disponible), como sha512 o
whirlpool. Una lista completa de algoritmos puede ser
obtenida con la función hash_algos().
Nota:
Eliminado en PHP 7.1.0.
session.hash_bits_per_character
int
session.hash_bits_per_character permite definir
el número de bits utilizados para cada carácter durante las conversiones de
los datos binarios en elementos legibles. 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
bool
Activa la supervisión de la progresión de una subida, poblando la variable $_SESSION. Por omisión, vale 1 (activado).
El seguimiento de la progresión de una subida escribe en el almacén de sesión el nombre de fichero y el nombre de campo proporcionados por el cliente mientras la subida está en curso, para permitir consultar el proceso desde una solicitud distinta. En las aplicaciones que no utilizan barras de progreso de subida, considere desactivar esta opción; los nombres de fichero y de campo no se validan y pueden contener código PHP, lo que hace trivial la explotación de cualquier » vulnerabilidad de inclusión de ficheros locales.
session.upload_progress.cleanup
bool
Limpia las informaciones de progresión tan pronto como todos los datos POST han sido leídos (es decir, la subida ha terminado). Por omisión, vale 1 (activado).
Nota:
Se recomienda encarecidamente mantener activa esta funcionalidad.
session.upload_progress.prefix
string
Un prefijo utilizado para la clave relativa a la progresión de la subida
en el array $_SESSION. Esta clave será concatenada con
el valor de $_POST[ini_get("session.upload_progress.name")]
para proporcionar un índice único.
Por omisión, vale "upload_progress_".
session.upload_progress.name
string
El nombre de la clave a utilizar en el array $_SESSION para almacenar las informaciones de progresión. Consulte también session.upload_progress.prefix.
Si $_POST[ini_get("session.upload_progress.name")]
no es proporcionado o disponible, la progresión de una subida no será registrada.
Por omisión, vale "PHP_SESSION_UPLOAD_PROGRESS".
session.upload_progress.freq
mixed
Define el número de veces que las informaciones de progresión de subida deben ser actualizadas. Puede ser definido en bytes (es decir, "actualizar las informaciones de progresión de subida cada 100 bytes"), o en porcentaje (es decir, "actualizar las informaciones de progresión de subida cada 1% de recepción del peso total del archivo").
Por omisión, vale "1%".
session.upload_progress.min_freq
int
El retraso mínimo entre las actualizaciones, en segundos. Por omisión, vale "1" (un segundo).
session.lazy_write
bool
session.lazy_write, cuando está definido a 1, significa que
los datos de sesión solo serán reescritos si estos cambian. Por
omisión 1, activado.
La progresión de subida no será registrada a menos que session.upload_progress.enabled esté activo, y que la variable $_POST[ini_get("session.upload_progress.name")] esté definida. Consulte la progresión de subida de sesión para más información sobre esta funcionalidad.