Ответ 1
По-моему, лучшим было бы: http://www.php.net/manual/en/function.session-set-cookie-params.php
void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )
Какой рекомендуемый способ установить httponly и безопасные флаги в файле cookie PHPSESSID?
Я нашел http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-httponly. Любые лучшие предложения?
спасибо
По-моему, лучшим было бы: http://www.php.net/manual/en/function.session-set-cookie-params.php
void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] )
Мне не удалось установить защищенный флаг с session_set_cookie_params(...)
, поэтому я сделал, после session_start()
установить cookie PHPSESSID, с setcookie(...)
. Окончательный параметр, true, делает файл cookie безопасным.
<?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
);
?>
Когда я проверил файл cookie PHPSESSID в Firefox, его свойство "Отправить для" было установлено только "Зашифрованные соединения", а его свойство "Истекает" было установлено "В конце сеанса".
ini_set('session.cookie_httponly', 1);
подробнее здесь в документах PHP
Я использую Apache httpd через HTTPS, установка session.cookie_httponly = 1
и session.cookie_secure = 1
работает для меня.
Если вы используете Apache, попробуйте это на вашем .htaccess
php_value session.cookie_httponly 1