Кроме флага session.cookie_secure
, обеспечивающего передачу кук по защищенному соединению, можно дополнительно усилить защиту, запретив броузеру оперировать куками посредством скриптов. Для этого предназначен еще один флаг session.cookie_httponly
Этот флаг сообщает броузеру, что куки могут передаваться только по http-протоколу, а не, например, посредством JavaScript. Это обеспечивает дополнительную защиту от XSS атак (межсайтовый скриптинг).
По умолчанию значение флага Off
, поэтому имеет смысл установить его в On
.
Установить флаг session.cookie_httponly
можно разными способами
При передаче кук посредством http это всего лишь допонительное значение HttpOnly
заголовка Set-Cookie
, так что его можно установить так:
<?php header("Set-Cookie: name=value; secure; HttpOnly");
Штатно значение session.cookie_httponly устанавливается в php.ini. Можно воспользоваться:
ini_set('session.cookie_httponly',1);
Если php установлен модулем апача, это можно сделать и в .htaccess:
<IfModule php7_module> php_flag session.cookie_httponly On </IfModule>
или так:
<IfModule mod_headers.c> Header always edit Set-Cookie (.*) "$1; HTTPOnly" </IfModule>
Флаг также может быть установлен функцией session_set_cookie_params
или функцией setcookie
.
Разумеется, поддержка броузерами (и разными версиями) этого параметра реализована по-разному. Тем более, ничего не гарантируется для произвольного клиента. Это всего-лишь дополнительный элемент защиты.