Permettre d'activer sur certains sites le flag Secure du cookie de session
Le flag Secure permet de laisser la décision d’envoi ou non du cookie au navigateur. Il signifie “n’envoie le cookie que sur les moyens de communication que tu considères comme sécurisés”.
En général, le protocole HTTPS est considéré comme un canal de communication sécurisé, mais pas le protocole HTTP. Aussi, un cookie de session avec le flag Secure ne sera envoyé que si les requêtes et réponses sont en HTTPS. Ceci évite le vol de session durant le transport du cookie de session en HTTP.
Sur un site entièrement en HTTPS, il peut exister des situations dans lesquelles les cookies transitent en clair (HTTP). Par exemple, lorsqu’un utilisateur cherche à joindre le site en HTTP (après avoir cliqué sur un lien par exemple). L’utilisateur est alors immédiatement redirigé vers l’HTTPS mais la première requête aura été effectuée en HTTP, et s’il possédait un cookie à ce moment là, il sera envoyé en HTTP (lors de cette première requête), c’est ce qu’empêche le flag Secure.
Pour en savoir plus : https://www.information-security.fr/securite-sites-web-lutilite-flags-secure-httponly/
Le patch proposé ci-dessous n'est activé que si le fichier mes_options.php contient :
define("_COOKIE_SECURE_FLAG", true);
Le patch consiste à remplacer, dans la fonction spip_setcookie :
$httponly = in_array($name, explode(' ', 'spip_session'));
par :
$httponly = in_array($name, explode(' ', 'spip_session')); if ($httponly AND defined('_COOKIE_SECURE_FLAG') AND _COOKIE_SECURE_FLAG) $secure = true;
Cordialement
Equipement