[spip-dev] Prevenir le vol de session (cookie) avec HttpOnly

Bonjour,

Que pensez-vous de la prévention de vol de session (cookie) avec HttpOnly ?
https://www.owasp.org/index.php/HttpOnly

Cordialement
Equipement

Que pensez-vous de la prévention de vol de session (cookie) avec HttpOnly ?
HttpOnly | OWASP Foundation

Il faudrait faire quelques tests mais ça paraît une bonne idée ; as-tu
un patch ?

-- Fil

Fil <fil <at> rezo.net> writes:

> Que pensez-vous de la prévention de vol de session (cookie) avec HttpOnly ?
> HttpOnly | OWASP Foundation

Il faudrait faire quelques tests mais ça paraît une bonne idée ; as-tu
un patch ?

Je pensais à un paramètre optionnele à mettre dans mes_option.php
(define('SPIP_SETCOOKIE_HTTPONLY','oui'))

et à une modification de la fonction spip_setcookie :

function spip_setcookie ($name='', $value='', $expire=0, $path='AUTO',
$domain='', $secure='', $httponly='') {
(...)
  if (defined('SPIP_SETCOOKIE_HTTPONLY') AND strnatcmp(phpversion(),'5.2.0') >= 0)
    $httponly = true;
  
  if ($httponly)
    @setcookie ($name, $value, $expire, $path, $domain, $secure, $httponly);
  if ($secure)
(...)
}

Fil <fil <at> rezo.net> writes:

> Que pensez-vous de la prévention de vol de session (cookie) avec HttpOnly ?
> HttpOnly | OWASP Foundation

Il faudrait faire quelques tests mais ça paraît une bonne idée ; as-tu
un patch ?

------- remplace mon post précédent ------------
Je pensais à un paramètre optionnel à mettre dans mes_option.php
define('SPIP_SETCOOKIE_HTTPONLY','oui');

et à une modification de la fonction spip_setcookie :

function spip_setcookie ($name='', $value='', $expire=0, $path='AUTO',
$domain='', $secure='', $httponly='') {
(...)
  if (defined('SPIP_SETCOOKIE_HTTPONLY'))
    $httponly = true;
  
  if ($httponly AND strnatcmp(phpversion(),'5.2.0') >= 0)
    @setcookie ($name, $value, $expire, $path, $domain, $secure,
$httponly);
  if ($secure)
(...)
}

Il ne fait pas que ça s'applique à tous les les cookies posés par cette fonction, mais uniquement aux cookies de session...
(sinon on va avoir des features qui bugguent si les cookies ne sont plus accessibles en js côté client)

Cédric

Cédric Morin <cedric.morin <at> yterium.com> writes:

Il ne fait pas que ça s'applique à tous les les cookies posés par cette

fonction, mais uniquement aux

cookies de session...
(sinon on va avoir des features qui bugguent si les cookies ne sont plus

accessibles en js côté client)

Cédric

Bien vu. J'ai ajouté ci-dessous un test sur le nom du cookie :

function spip_setcookie ($name='', $value='', $expire=0, $path='AUTO',
$domain='', $secure='', $httponly='') {
(...)
  if (defined('SPIP_SETCOOKIE_HTTPONLY'))
    $httponly = true;
  
  if ($httponly AND $name='spip_session' AND strnatcmp(phpversion(),'5.2.0') >= 0)
    @setcookie ($name, $value, $expire, $path, $domain, $secure, $httponly);
  else if ($secure)
(...)

Désolé pour la faute de frappe (un égal ou lieu de deux) :
$name=='spip_session'

Suggestion intégrée en
http://core.spip.org/projects/spip/repository/revisions/19183

Laissons un peu tester sous diverses plateformes et on pourra reporter
sur spip 2.1

-- Fil