Gestion des options de cookies #5553

Merged
marcimat merged 2 commits from issue_5552_cookies into master 1 week ago
Owner
  • Mettre l’option 'secure' à true dès qu’on est en HTTPS
  • Mettre l’option 'secure' à true si la constante _COOKIE_SECURE est définie
    (auparavent uniquement sur les cookies _COOKIE_SECURE_LIST + spip_session);
  • Appeler la plupart des cookies pour SPIP avec l’option 'httponly' à true
  • Déprecier la constante _COOKIE_SECURE_LIST (utiliser l’option 'httponly' à true sur les appels concernés)
  • (edit): Déprecier la constante _COOKIE_SECURE
  • (edit): Changement de signature de spip_setcookie (pour reprendre celle de php)

Refs: #5552

--

J’ai plusieurs questions tout de même :

  • sur _COOKIE_SECURE peut être qu’il faut simplement de déprécier aussi, vu qu’on affecte true si https ?
  • sur le tableau $options (j’ai mis @deprecated l’ancien code): mais je me demande s’il ne faut pas revenir à la signature de PHP.

Je m’explique :

Depuis PHP 8+ on peut nommer les paramètres d’appels de fonction, tel que

  • setcookie('nom', 'valeur', expires: 3600, secure: true);

PHP sur cette fonction accèpte, comme on a fait, un tableau en 3è option

  • setcookie('nom', 'valeur', ['expires' => 3600, 'secure' => true]);

Mais à partir d’un tableau, en PHP on peut aussi utiliser le spread operator (···) pour exploser un tableau (même avec clés indexées) en paramètre de fonction, tel que

  • setcookie('nom', 'valeur', ...['expires' => 3600, 'secure' => true]);

Un des avantages des arguments nommés, c’est que les IDE et les outils d’analyse statique voient rapidement les typages et les éventuels prooblèmes, contrairement à des tableaux où il faut alors spécifier dans le PHP doc un format assez spécifique.

Ça serait plus clair et cohérent que cette fonction spip_setcookie mappe la signature de PHP du coup, non ? (edit: fait)

- Mettre l’option 'secure' à `true` dès qu’on est en HTTPS - Mettre l’option 'secure' à `true` si la constante `_COOKIE_SECURE` est définie (auparavent uniquement sur les cookies _COOKIE_SECURE_LIST + spip_session); - Appeler la plupart des cookies pour SPIP avec l’option 'httponly' à `true` - Déprecier la constante `_COOKIE_SECURE_LIST` (utiliser l’option 'httponly' à `true` sur les appels concernés) - (edit): Déprecier la constante `_COOKIE_SECURE` - (edit): Changement de signature de spip_setcookie (pour reprendre celle de php) Refs: #5552 -- J’ai plusieurs questions tout de même : - sur `_COOKIE_SECURE` peut être qu’il faut simplement de déprécier aussi, vu qu’on affecte `true` si https ? - sur le tableau `$options` (j’ai mis @deprecated l’ancien code): mais je me demande s’il ne faut pas revenir à la signature de PHP. Je m’explique : Depuis PHP 8+ on peut nommer les paramètres d’appels de fonction, tel que - `setcookie('nom', 'valeur', expires: 3600, secure: true);` PHP sur cette fonction accèpte, comme on a fait, un tableau en 3è option - `setcookie('nom', 'valeur', ['expires' => 3600, 'secure' => true]);` Mais à partir d’un tableau, en PHP on peut aussi utiliser le `spread operator` (`···`) pour exploser un tableau (même avec clés indexées) en paramètre de fonction, tel que - `setcookie('nom', 'valeur', ...['expires' => 3600, 'secure' => true]);` Un des avantages des arguments nommés, c’est que les IDE et les outils d’analyse statique voient rapidement les typages et les éventuels prooblèmes, contrairement à des tableaux où il faut alors spécifier dans le PHP doc un format assez spécifique. Ça serait plus clair et cohérent que cette fonction `spip_setcookie` mappe la signature de PHP du coup, non ? (edit: fait)
marcimat force-pushed issue_5552_cookies from ebcd459290 to 540c750c68 2 months ago
b_b commented 2 months ago
Owner
  • sur _COOKIE_SECURE peut être qu’il faut simplement de déprécier aussi, vu qu’on affecte true si https ?

Je pense oui, car je me demande quel est l'intérêt de passer les cookies en secure/httponly si le site n'est pas en https ?

Ça serait plus clair et cohérent que cette fonction spip_setcookie mappe la signature de PHP du coup, non ?

Merci pour les explications et +1 pour la cohérence avec la fonction de PHP !

> - sur `_COOKIE_SECURE` peut être qu’il faut simplement de déprécier aussi, vu qu’on affecte `true` si https ? Je pense oui, car je me demande quel est l'intérêt de passer les cookies en secure/httponly si le site n'est pas en https ? > Ça serait plus clair et cohérent que cette fonction `spip_setcookie` mappe la signature de PHP du coup, non ? Merci pour les explications et +1 pour la cohérence avec la fonction de PHP !
Poster
Owner
  • sur _COOKIE_SECURE peut être qu’il faut simplement de déprécier aussi, vu qu’on affecte true si https ?

Je pense oui, car je me demande quel est l'intérêt de passer les cookies en secure/httponly si le site n'est pas en https ?

Si tu mets 'secure' à true hors HTTPS (et localhost je crois), les cookies ne sont simplement pas envoyés.

Le seul cas que je vois c’est si le site est mal configuré et ne redirige pas de http vers https côté serveur, dans ce cas on voudrait qu’aucun cookie ne circule sur le http je suppose ?

> > - sur `_COOKIE_SECURE` peut être qu’il faut simplement de déprécier aussi, vu qu’on affecte `true` si https ? > > Je pense oui, car je me demande quel est l'intérêt de passer les cookies en secure/httponly si le site n'est pas en https ? Si tu mets 'secure' à true hors HTTPS (et localhost je crois), les cookies ne sont simplement pas envoyés. Le seul cas que je vois c’est si le site est mal configuré et ne redirige pas de http vers https côté serveur, dans ce cas on voudrait qu’aucun cookie ne circule sur le http je suppose ?
b_b commented 2 months ago
Owner

si le site est mal configuré et ne redirige pas de http vers https

Je pense qu'on peut se permettre de ne pas prendre en charge ce type d'erreur de configuration tant que c'est bien déclaré/documenté.

> si le site est mal configuré et ne redirige pas de http vers https Je pense qu'on peut se permettre de ne pas prendre en charge ce type d'erreur de configuration tant que c'est bien déclaré/documenté.
marcimat added 1 commit 2 months ago
1e76739b16 change: Gestion des options de cookies
- Mettre l’option 'secure' à `true` dès qu’on est en HTTPS
- Mettre l’option 'secure' à `true` si la constante `_COOKIE_SECURE` est définie
  (auparavent uniquement sur les cookies _COOKIE_SECURE_LIST + spip_session);
- Appeler la plupart des cookies pour SPIP avec l’option 'httponly' à `true`
- Déprecier la constante `_COOKIE_SECURE_LIST` (utiliser l’option 'httponly' à `true` sur les appels concernés)

Refs: #5552
marcimat added 1 commit 1 month ago
9561264c58 change: Gestion des options de cookies
- Mettre l’option 'secure' à `true` dès qu’on est en HTTPS
- Mettre l’option 'secure' à `true` si la constante `_COOKIE_SECURE` est définie
  (auparavent uniquement sur les cookies _COOKIE_SECURE_LIST + spip_session);
- Appeler la plupart des cookies pour SPIP avec l’option 'httponly' à `true`
- Déprecier la constante `_COOKIE_SECURE_LIST` (utiliser l’option 'httponly' à `true` sur les appels concernés)

Refs: #5552
Owner

Je suis favorable, de manière générale, à la dépréciation des constantes et pour le nommage de paramètres quand il y en a beaucoup.

Je suis favorable, de manière générale, à la dépréciation des constantes et pour le nommage de paramètres quand il y en a beaucoup.
marcimat force-pushed issue_5552_cookies from 9561264c58 to fd0af2bf41 2 weeks ago
marcimat force-pushed issue_5552_cookies from fd0af2bf41 to a662312c2f 2 weeks ago
Poster
Owner
  • J’ai réécrit la PR avec les paramètres de la fonction PHP
  • J’ai déprécié _COOKIE_SECURE aussi
- J’ai réécrit la PR avec les paramètres de la fonction PHP - J’ai déprécié `_COOKIE_SECURE` aussi
marcimat added 1 commit 2 weeks ago
marcimat changed title from [WIP] change: Gestion des options de cookies to Gestion des options de cookies 2 weeks ago
JamesRezo approved these changes 2 weeks ago
b_b approved these changes 2 weeks ago
marcimat merged commit 2a0f64e4d7 into master 1 week ago
marcimat deleted branch issue_5552_cookies 1 week ago

Reviewers

JamesRezo approved these changes 2 weeks ago
b_b approved these changes 2 weeks ago
The pull request has been merged as 2a0f64e4d7.
Sign in to join this conversation.
Loading…
There is no content yet.