llamar - ¿Cómo se configura el uso de cookies de HttpOnly en PHP?
httponly cookie php (9)
Explicación aquí de Ilia ... 5.2 solo
Soporte de bandera de cookies httpOnly 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");
¿Cómo puedo configurar las cookies en mis PHP apps
como HttpOnly cookies
?
La sintaxis correcta del comando php_flag es
php_flag session.cookie_httponly On
Y tenga en cuenta, solo la primera respuesta del servidor establece la cookie y aquí (por ejemplo, puede ver la directiva "HttpOnly". Por lo tanto, para probar eliminar las cookies del navegador después de cada solicitud de prueba.
Para las cookies de sesión propias 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 de session_start()
.
ini_set( ''session.cookie_httponly'', 1 );
Puede especificarlo en la función de cookie establecida ver el manual php
setcookie(''Foo'',''Bar'',0,''/'', ''www.sample.com'' , FALSE, TRUE);
Puedes 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 futuras usarán httponly.
Tenga en cuenta que HttpOnly no detiene la creación de scripts entre sitios; en cambio, neutraliza un posible ataque, y actualmente lo hace solo 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 el comercio.
Tenga en cuenta que las cookies de la sesión PHP no usan 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 elementos importantes aquí:
- Tienes que llamar a
session_name()
antes desession_start()
- Esto también establece la ruta predeterminada a ''/'', que es necesaria para Opera, pero que las cookies de la sesión PHP tampoco funcionan de manera predeterminada.
<?php
//None HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, FALSE);
//HttpOnly cookie:
setcookie("abc", "test", NULL, NULL, NULL, NULL, TRUE);
?>
- Para sus cookies , vea esta respuesta.
- Para la cookie de sesión propia de PHP (
PHPSESSID
, por defecto), vea la respuesta de @ richie
Las setcookie()
y setrawcookie()
, introdujeron el parámetro httponly
, en las edades oscuras de PHP 5.2.0, haciendo que esto sea agradable y fácil. Simplemente establece el 7mo parámetro en verdadero, según la sintaxis
Sintaxis de la función simplificada por brevedad
setcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
setrawcookie( $name, $value, $expire, $path, $domain, $secure, $httponly )
Ingrese NULL
para los parámetros que desea permanecer como predeterminado. También es posible que desee considerar si debe establecer el parámetro de secure
.
También es posible usar la función de header()
nivel más bajo:
header( "Set-Cookie: name=value; httpOnly" );