Comment fonctionne le drapeau de cookie «sécurisé»?

102

Je sais qu'un cookie avec secureindicateur ne sera pas envoyé via une connexion non chiffrée. Je me demande comment cela fonctionne en profondeur.

Qui est responsable de déterminer si le cookie sera envoyé ou non?

ted
la source

Réponses:

92

Le client définit ceci uniquement pour les connexions cryptées et ceci est défini dans la RFC 6265 :

L'attribut Secure limite la portée du cookie aux canaux «sécurisés» (où «sécurisé» est défini par l'agent utilisateur). Lorsqu'un cookie a l'attribut Secure, l'agent utilisateur inclura le cookie dans une requête HTTP uniquement si la requête est transmise sur un canal sécurisé (généralement HTTP sur Transport Layer Security (TLS) [RFC2818]).

Bien qu'apparemment utile pour protéger les cookies contre les attaquants actifs du réseau, l'attribut Secure protège uniquement la confidentialité du cookie. Un attaquant actif du réseau peut écraser les cookies sécurisés d'un canal non sécurisé, perturbant leur intégrité (voir la section 8.6 pour plus de détails).

Cratyle
la source
4
dans le cas où le côté client n'a pas encore de cookie et qu'ils devraient être envoyés du côté serveur (par exemple connexion), le côté serveur sera-t-il celui qui décidera d'inclure le cookie en réponse?
ted
3
Le serveur définit initialement les cookies via "Set-Cookie headers"
Ivan
49

Juste un autre mot sur le sujet:

Omettre secureparce que votre site Web example.comest entièrement https ne suffit pas.

Si votre utilisateur atteint explicitement http://example.com, il sera redirigé vers https://example.commais c'est déjà trop tard; la première demande contenait le cookie.

Alain Tiemblo
la source
6
Je sais que c'est vieux, mais la précharge HSTS aide cette situation en empêchant ce problème de se produire fréquemment. Ce n'est toujours pas une solution à 100%, mais c'est juste une autre chose à considérer si vous voulez vraiment éviter les cookies sécurisés.
M. MonoChrome
5
@ Mr.MonoChrome Pourquoi voudriez-vous éviter les cookies sécurisés?
MEMark
@ Mr.MonoChrome bien que certains navigateurs plus anciens ou inférieurs, je crois, ne prennent même pas en charge HSTS
oldboy
1
Bon point. Pour les applications .NET, il est préférable de faire la redirection dans IIS (ou web.config) plutôt que par programme (par exemple globals.asax)
piris
Donc, si vous ne redirigiez pas de http vers https et ne serviez que sur https, vous n'en auriez pas besoin secure?
freins