@Tchalvak No, las respuestas actuales siguen siendo autorizadas. Nada ha cambiado desde 2008 con respecto a la configuración de cookies solo HTTP en PHP. Qué navegadores admiten cookies solo HTTP es una pregunta diferente, con una respuesta diferente.
Las funciones setcookie()y setrawcookie(), introdujeron el httponlyparámetro, en la era oscura de PHP 5.2.0, lo que lo hace agradable y fácil. Simplemente configure el séptimo parámetro en verdadero, según la sintaxis
Sintaxis de la función simplificada para mayor brevedad
Con los parámetros con nombre de PHP 8, finalmente podremos hacer que la set_cookiellamada sea menos detallada si no necesitamos establecer los otros parámetros. Por ejemplo set_cookie($name, $value, httponly: true).
Sygmoral
120
Para las propias cookies de sesión de PHP en Apache:
agregue esto a su configuración de Apache o.htaccess
<IfModulephp5_module>
php_flag session.cookie_httponly on
</IfModule>
Esto también se puede establecer dentro de un script, siempre que se llame antes session_start().
+1, ya que es bueno (por seguridad) tenerlo en su lugar en todo el servidor, pero en su lugar se agrega al php.ini.
Anthony Hatzopoulos
10
Tenga en cuenta que debe usarse php_flag en su lugar: "No use php_value para establecer valores booleanos. En su lugar, debe usar php_flag". php.net/manual/en/configuration.changes.php
Ondrej Machulda
@OndrejMachulda Cambiar php_valuea php_flagno funciona. Lo acabo de probar en mi servidor ..
Nate
6
@Nate: Al cambiar a php_flag, debe cambiar también el valor, a ono off, consulte el manual.
Ondrej Machulda
14
Tenga en cuenta que las cookies de sesión de PHP no se utilizan httponlyde forma predeterminada.
Tenga en cuenta que HttpOnly no detiene las secuencias de comandos entre sitios; en cambio, neutraliza un posible ataque, y actualmente solo lo hace en IE (FireFox expone las cookies HttpOnly en XmlHttpRequest y Safari no lo respeta en absoluto). Por supuesto, active HttpOnly, pero no pierda ni una hora de filtrado de salida y pruebas de fuzz en cambio.
Solo para su información session.use_only_cookies está activado por defecto en PHP> 5.3
Nic Cottrell
1
y correcto es que "todas las cookies de sesión futura " usarán httponly, no las personalizadas ...
qdev
2
La sintaxis correcta del comando php_flag es
php_flag session.cookie_httponly On
Y tenga en cuenta que la primera respuesta del servidor establece la cookie y aquí (por ejemplo, puede ver la directiva "HttpOnly". Por lo tanto, para probar, elimine las cookies del navegador después de cada solicitud de prueba.
$cookie->setHttpOnly(true);
con github.com/delight-im/PHP-CookieRespuestas:
PHPSESSID
por defecto), vea la respuesta de @ richieLas funciones
setcookie()
ysetrawcookie()
, introdujeron elhttponly
parámetro, en la era oscura de PHP 5.2.0, lo que lo hace agradable y fácil. Simplemente configure el séptimo parámetro en verdadero, según la sintaxisSintaxis de la función simplificada para mayor brevedad
Ingrese los
NULL
parámetros que desea mantener como predeterminados. También puede considerar si debe configurar elsecure
parámetro.También es posible utilizar la función anterior de nivel inferior
header()
:fuente
set_cookie
llamada sea menos detallada si no necesitamos establecer los otros parámetros. Por ejemploset_cookie($name, $value, httponly: true)
.Para las propias cookies de sesión de PHP en Apache:
agregue esto a su configuración de Apache o
.htaccess
Esto también se puede establecer dentro de un script, siempre que se llame antes
session_start()
.fuente
php.ini
.php_value
aphp_flag
no funciona. Lo acabo de probar en mi servidor ..php_flag
, debe cambiar también el valor, aon
ooff
, consulte el manual.Tenga en cuenta que las cookies de sesión de PHP no se utilizan
httponly
de forma predeterminada.Para hacer eso:
Un par de puntos a destacar aquí:
session_name()
antessession_start()
fuente
Tenga en cuenta que HttpOnly no detiene las secuencias de comandos entre sitios; en cambio, neutraliza un posible ataque, y actualmente solo lo hace en IE (FireFox expone las cookies HttpOnly en XmlHttpRequest y Safari no lo respeta en absoluto). Por supuesto, active HttpOnly, pero no pierda ni una hora de filtrado de salida y pruebas de fuzz en cambio.
fuente
Fuente
fuente
Explicación aquí de Ilia ... 5.2 solo aunque
httpOnly soporte de marca de cookies en PHP 5.2
Como se indica en ese artículo, puede configurar el encabezado usted mismo en versiones anteriores de PHP
fuente
Puede especificarlo en la función de establecer cookies consulte el manual de php
fuente
Puede usar esto en un archivo de encabezado.
De esta forma, todas las cookies de sesiones futuras utilizarán httponly.
fuente
La sintaxis correcta del comando php_flag es
Y tenga en cuenta que la primera respuesta del servidor establece la cookie y aquí (por ejemplo, puede ver la directiva "HttpOnly". Por lo tanto, para probar, elimine las cookies del navegador después de cada solicitud de prueba.
fuente
Una solución más elegante desde PHP> = 7.0
session_start
opciones de session_start
fuente