2017-02-23 3 views
1

I session.cookie_secure bis 1/true in der php.ini und laufen Sie den folgenden Code hinter Apache oder PHP-FPM + nginx-Server festgelegt haben -session.cookie_secure stellt nicht das sichere Cookie-Attribut

<!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> 

Nach dem Neustart von php-fpm/apache erscheint das Attribut 'secure' nicht im Set-Cookie-Header. Geprüft wget und Firefox (Entwickler-Tools> Toggle-Tools> Netzwerk) mit

echo session_get_cookie_params()[secure]; 

liefert 1. HTTPS CGI-Parameter Erzwingen von Ein-/Ausschalten keinen Unterschied machen. Diese Änderung wurde mit verifizierter -

echo $_SERVER['HTTPS']; 

Diesem dem gleichen Ergebnis in RHEL/CentOS/EL 6 geben (PHP 5.3.3), RHEL/CentOS/EL 7 (PHP 5.4) und Gentoo (PHP 5.6.29)

Antwort

0

session.cookie_secure konfiguriert das sichere Flag nur für Cookies, die von der PHP-Sitzungserweiterung gesendet werden; d. h. Set-Cookie Header ausgelöst durch session_start(), session_regenerate_id() Aufrufe.

Es hat keinen Einfluss auf setcookie() oder setrawcookie() (noch irgendetwas anderes in PHP, das Cookies an den Client senden kann) - diese Funktionen haben ihren eigenen $secure Parameter für diesen Zweck.