sesiones llamar eliminar ejemplos destruir cookie _cookie php security cookies xss httponly

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 de session_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); ?>

Fuente


  • 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" );