¿Cómo puedo configurar las cookies en mi PHP apps
como HttpOnly cookies
?
$cookie->setHttpOnly(true);
con github.com/delight-im/PHP-Cookie
¿Cómo puedo configurar las cookies en mi PHP apps
como HttpOnly cookies
?
$cookie->setHttpOnly(true);
con github.com/delight-im/PHP-Cookie
Respuestas:
PHPSESSID
por defecto), vea la respuesta de @ richieLas funciones setcookie()
y setrawcookie()
, introdujeron el httponly
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 sintaxis
Sintaxis de la función simplificada para mayor brevedad
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
Ingrese los NULL
parámetros que desea mantener como predeterminados. También puede considerar si debe configurar el secure
parámetro.
También es posible utilizar la función anterior de nivel inferior header()
:
header( "Set-Cookie: name=value; httpOnly" );
set_cookie
llamada sea menos detallada si no necesitamos establecer los otros parámetros. Por ejemplo set_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
<IfModule php5_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()
.
ini_set( 'session.cookie_httponly', 1 );
php.ini
.
php_value
a php_flag
no funciona. Lo acabo de probar en mi servidor ..
php_flag
, debe cambiar también el valor, a on
o off
, consulte el manual.
Tenga en cuenta que las cookies de sesión de PHP no se utilizan httponly
de forma predeterminada.
Para hacer eso:
$sess_name = session_name();
if (session_start()) {
setcookie($sess_name, session_id(), null, '/', null, null, true);
}
Un par de puntos a destacar aquí:
session_name()
antessession_start()
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.
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
header("Set-Cookie: hidden=value; httpOnly");
Puede especificarlo en la función de establecer cookies consulte el manual de php
setcookie('Foo','Bar',0,'/', 'www.sample.com' , FALSE, TRUE);
Puede usar esto en un archivo de encabezado.
// setup session enviroment
ini_set('session.cookie_httponly',1);
ini_set('session.use_only_cookies',1);
De esta forma, todas las cookies de sesiones futuras utilizarán httponly.
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.
Una solución más elegante desde PHP> = 7.0
session_start(['cookie_lifetime' => 43200,'cookie_secure' => true,'cookie_httponly' => true]);