web-dev-qa-db-fra.com

Comment puis-je vérifier que mes cookies sont uniquement envoyés via https cryptés et non http?

J'ai lu un article de blog GitHub passe à SSL, mais reste incendiaire qui prétendait que les cookies peuvent être envoyés non cryptés sur http même si le site utilise uniquement https. Ils écrivent qu'un cookie doit être marqué d'un "drapeau sécurisé", mais je ne sais pas à quoi ressemble ce drapeau.

Comment puis-je vérifier que mes cookies ne sont envoyés que via https crypté et non via http non crypté, sur mon site qui utilise uniquement https?

45
Jonas

Le drapeau sécurisé des cookies ressemble à ceci:

sécurise;

C'est ça.
Cela devrait apparaître à la fin de l'en-tête Http:

Set-Cookie: mycookie = somevalue; path =/securesite /; Expire = 12/12/2010; sécurise; httpOnly;

Bien sûr, pour le vérifier, branchez simplement n'importe quel proxy ou renifleur (j'utilise l'excellent Fiddler ) et regardez ...

* Bonus: j'ai également ajouté l'attribut httpOnly, protège contre l'accès aux cookies depuis l'espace Javascript, par exemple via XSS.

48
AviD

Vous pouvez vérifier en utilisant un outil comme Firebug (une extension pour Firefox: http://getfirebug.com/ ). Le cookie s'affichera comme "sécurisé".

De plus, si vous êtes dans Firefox, vous pouvez en être certain dans la fenêtre "Supprimer les cookies individuels".

Du point de vue du développement, un cookie "sécurisé" est le même qu'un cookie normal, mais contient un paramètre supplémentaire. par exemple.

SessionId=blah; path=/; secure; HttpOnly

Votre cadre de développement avec, espérons-le, supporte l'ajout facile - faites-nous savoir quelle plateforme vous utilisez si vous avez besoin d'aide.

Pendant que vous y êtes, je suggère d'ajouter également le drapeau HttpOnly si vous ne manipulez pas les cookies en Javascript, cela donnera aux cookies une protection supplémentaire contre certaines attaques XSS.

19
KirkJ

Vous pouvez également utiliser le plugin de Google Chrome pour y parvenir, c'est très bien Advance REST Client

Un exemple de sortie ressemble à ceci:

Connection: keep-alive
Strict-Transport-Security: max-age=31536000
Content-Type: application/json
Content-Length: 104
X-Content-Type-Options: nosniff
Server: WEBrick/1.3.1 (Ruby/2.0.0/2015-12-16)
Date: Thu, 25 Aug 2016 07:15:57 GMT
Set-Cookie: your.cookie.name=some-hash-uuid-here; domain=your-backend-hostname.com; path=/; expires=Sat, 24 Sep 2016 07:15:57 -0000; HttpOnly; secure
Via: 1.1 vegur

Comme vous le voyez à la fin de la valeur de l'attribut ' Set-Cookie ', vous verrez le mot ' secure 'comme commenté plusieurs fois sur les réponses précédentes, mais notez également comment il existe un attribut appelé' Strict-Transport-Security ", ce qui est important à mentionner.

3
d1jhoni1b