without secure ini_set flag expire enviar cookie_httponly cookie php security session-cookies

secure - Configure httpOnly y asegure la cookie PHPSESSID en PHP



session cookie_httponly php (6)

¿Cuál es la forma recomendada de establecer marcas httponly y de seguridad en la cookie PHPSESSID?

Encontré http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly . ¿Alguna sugerencia mejor?

Gracias


El uso de .htaccess para este propósito solo ralentiza su aplicación.

Creo que es mejor agregar este fragmento de código en su archivo de configuración principal (ejemplo config.php) o en el archivo de inclusión principal (ejemplo global.php)

// Prevents javascript XSS attacks aimed to steal the session ID ini_set(''session.cookie_httponly'', 1); // Prevent Session ID from being passed through URLs ini_set(''session.use_only_cookies'', 1);

Si está utilizando https: // en lugar de http: //, entonces también

// Uses a secure connection (HTTPS) ini_set(''session.cookie_secure'', 1);

Este método también es adecuado para aquellos que no tienen acceso a php.ini



No pude obtener el indicador de seguridad trabajando con session_set_cookie_params(...) , así que lo que hice fue que, después de session_start() configuré la cookie PHPSESSID, la setcookie(...) con setcookie(...) . El parámetro final, verdadero, hace que la cookie tenga una marca segura.

<?php session_start(); $currentCookieParams = session_get_cookie_params(); $sidvalue = session_id(); setcookie( ''PHPSESSID'',//name $sidvalue,//value 0,//expires at end of session $currentCookieParams[''path''],//path $currentCookieParams[''domain''],//domain true //secure ); ?>

Cuando verifiqué la cookie PHPSESSID en Firefox, su propiedad ''Enviar para'' se configuró como ''Solo conexiones cifradas'' y su propiedad ''Caduca'' se configuró como ''Al final de la sesión''.


Si está utilizando Apache, intente esto en su .htaccess

php_value session.cookie_httponly 1


Utilizo Apache httpd sobre HTTPS, set session.cookie_httponly = 1 & session.cookie_secure = 1 funciona para mí.