Securiser les cookies #5552

Closed
opened 2 months ago by Pierretux · 9 comments

Bonjour,

Dans la fonction https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/cookie.php#L183 pourrait on mettre true dans le 5éme argument pour que les cookie de session soit indiquer securisé ?
C'est une demande qui remonte suite à un audit de sécurité sur SPIP 4.1

Merci pour vos retours.

Bonjour, Dans la fonction https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/cookie.php#L183 pourrait on mettre `true` dans le 5éme argument pour que les cookie de session soit indiquer securisé ? C'est une demande qui remonte suite à un audit de sécurité sur SPIP 4.1 Merci pour vos retours.
Owner

Je doute que ça soit "5è argument", vu qu’on utilise un tableau d’option sur setcookie. Ni la ligne #183…

Tu penses probablement à l’appel de setcookie de https://git.spip.net/spip/spip/src/branch/4.1/ecrire/inc/cookie.php#L112 ?

Donc tu parles de l’option secure dans le tableau d’option ?

Voir 63a427ac2f et #3821

Alors il peut déjà être mis à true via une constante _COOKIE_SECURE donc.

Peut être qu’il faut qu’on adapte pour que si on est en HTTPS, on passe à true systématiquement ?

Je doute que ça soit "5è argument", vu qu’on utilise un tableau d’option sur setcookie. Ni la ligne #183… Tu penses probablement à l’appel de `setcookie` de https://git.spip.net/spip/spip/src/branch/4.1/ecrire/inc/cookie.php#L112 ? Donc tu parles de l’option `secure` dans le tableau d’option ? Voir 63a427ac2fbda83 et #3821 Alors il peut déjà être mis à `true` via une constante `_COOKIE_SECURE` donc. Peut être qu’il faut qu’on adapte pour que si on est en HTTPS, on passe à true systématiquement ?
Owner

Cela dit bool $secure = false, c’est le 6è argument dans setcookie (avant qu’elle ne devienne un tableau d’option…

En 3.2 aussi on utilisait https://git.spip.net/spip/spip/src/branch/3.2/ecrire/inc/cookie.php#L45 secure en 6è argument…

Donc, là comme ça, c’est pas hyper clair ta demande…

Cela dit `bool $secure = false,` c’est le 6è argument dans setcookie (avant qu’elle ne devienne un tableau d’option… En 3.2 aussi on utilisait https://git.spip.net/spip/spip/src/branch/3.2/ecrire/inc/cookie.php#L45 secure en 6è argument… Donc, là comme ça, c’est pas hyper clair ta demande…
Poster

En effet, ce n'est pas clair et tu m'a répondu ;)

Par contre, oui quand le site est en https, on peut avoir un true directement ?

En effet, ce n'est pas clair et tu m'a répondu ;) Par contre, oui quand le site est en https, on peut avoir un true directement ?
Owner

Tu parlais donc bien de l’option 'secure' ? je ne me trompe pas ?

Tu parlais donc bien de l’option 'secure' ? je ne me trompe pas ?
Poster

oui parfaitement

oui parfaitement
Owner

Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies

Également (interne) spip-team/securite/#3725

La todo serait donc :

  • mettre secure = true dès qu'on est HTTPS (bool) ($_SERVER['HTTPS'] ?? false)
  • a priori déprécier _COOKIE_SECURE en conséquence ? (ou le laisser pour forcer toujours des cookies avec secure => true (rend alors HS tout usage hors https)
  • appeler systématiquement certains cookies sans utilité en JS avec l’option httponly
    • spip_session,
    • spip_admin,
    • spip_accepte_ajax,
    • spip_lang_ecrire ?,
  • conserver la liste étendue via _COOKIE_SECURE_LIST mais la déprécier au profit de l’appel direct avec l’option 'httponly => true' quand le besoin est présent
Voir https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#restrict_access_to_cookies Également (interne) spip-team/securite/#3725 La todo serait donc : - mettre `secure = true` dès qu'on est HTTPS `(bool) ($_SERVER['HTTPS'] ?? false)` - a priori déprécier `_COOKIE_SECURE` en conséquence ? (ou le laisser pour forcer *toujours* des cookies avec `secure => true` (rend alors HS tout usage hors https) - appeler systématiquement certains cookies sans utilité en JS avec l’option httponly - spip_session, - spip_admin, - spip_accepte_ajax, - spip_lang_ecrire ?, - conserver la liste étendue via `_COOKIE_SECURE_LIST` mais la déprécier au profit de l’appel direct avec l’option 'httponly => true' quand le besoin est présent
marcimat referenced this issue from a commit 2 months ago
b_b changed title from Securisé cookie to Securiser les cookies 2 months ago
marcimat referenced this issue from a commit 2 months ago
marcimat referenced this issue from a commit 2 months ago
marcimat referenced this issue from a commit 1 month ago
marcimat referenced this issue from a commit 2 weeks ago
marcimat referenced this issue from a commit 2 weeks ago
marcimat referenced this issue from a commit 2 weeks ago
marcimat referenced this issue from a commit 2 weeks ago
marcimat referenced this issue from a commit 2 weeks ago
Owner

Intégré en SPIP 5.

Intégré en SPIP 5.
marcimat closed this issue 2 weeks ago
Poster

hello,

merci pour le code, on peut envisager un report en 4 ?

merci Mathieu

hello, merci pour le code, on peut envisager un report en 4 ? merci Mathieu
Owner

Ça peut se réfléchir pour un report partiel en 4.2 éventuellement.

Ça peut se réfléchir pour un report partiel en 4.2 éventuellement.
marcimat referenced this issue from a commit 2 weeks ago
Sign in to join this conversation.
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: spip/spip#5552
Loading…
There is no content yet.