/ / session.cookie_secure не встановлює атрибут secure cookie - php, security, cookies, атрибути

session.cookie_secure не встановлює атрибут захищеного файлу cookie - php, security, cookies, атрибути

Я встановив session.cookie_secure на 1 / true у php.ini і виконав наступний код за apache або сервером php-fpm + nginx -

<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>

<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named "" . $cookie_name . "" is not set!";
} else {
echo "Cookie "" . $cookie_name . "" is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>

</body>
</html>

Після перезапуску php-fpm / apache атрибут "secure" не з'являється в заголовку Set-Cookie. Перевіряється за допомогою wget і firefox (інструменти розробника> засоби перемикання> мережа)

echo session_get_cookie_params()[secure];

return 1. Примусовий параметр CGI HTTPS увімкнено / вимкнено. Це зміна перевірено за допомогою -

echo $_SERVER["HTTPS"];

Це дає той самий результат у RHEL / CentOS / EL 6 (PHP 5.3.3), RHEL / CentOS / EL 7 (PHP 5.4) і Gentoo (PHP 5.6.29)

Відповіді:

0 для відповіді № 1

session.cookie_secure налаштовує прапор безпеки тільки для файлів cookie, надісланих розширенням сеансу PHP; тобто Set-Cookie заголовки запускаються session_start(), session_regenerate_id() дзвінки

Це не впливає setcookie() або setrawcookie() (нічого іншого в PHP, який може посилати куки клієнту) - ці функції мають свої власні $secure параметр для цієї мети.