Un cookie de session est un cookie HTTP défini sans attribut Expires ou Max-Age, donc le navigateur le supprime lorsque la session actuelle se termine. Les cookies permettent à un serveur de maintenir l'état, comme une connexion, sur HTTP, qui est principalement sans état. Dans le scraping, un jar de cookies stocke ces cookies afin que chaque requête ultérieure dans la même tâche les renvoie.
Le navigateur décide quand la session actuelle se termine. Certains navigateurs restaurent les sessions au redémarrage, ce qui peut maintenir les cookies de session actifs indéfiniment. Les cookies qui définissent Expires ou Max-Age sont des cookies permanents, et lorsque les deux attributs sont définis, Max-Age a la priorité.
Attributs Clés des Cookies
- Pas d'Expires ou Max-Age : C'est ce qui fait d'un cookie un cookie de session. La RFC 6265 stipule que l'agent utilisateur doit supprimer ces cookies de son magasin de cookies lorsque la session se termine.
- Securisé : Limite le cookie aux canaux sécurisés, tels que les connexions TLS.
- HttpOnly : Limite le cookie aux requêtes HTTP, de sorte que les scripts du navigateur ne puissent pas le lire.
Jar de Cookies dans le Scraping
- Ce qu'est un jar de cookies : Un magasin côté client qui enregistre les cookies des réponses et les renvoie dans les requêtes ultérieures. Le module
http.cookiejarde Python en fournit un, et il expire automatiquement les cookies stockés. - Sessions dans le code : Un objet de session
requestspersiste les cookies à travers toutes les requêtes effectuées à partir de celui-ci et réutilise les connexions via le pooling de connexions. - Sauvegarde sur disque :
MozillaCookieJarsauvegarde les cookies au formatcookies.txt, que curl utilise également. Les cookies de session ne sont pas sauvegardés à moins que vous ne passiezignore_discard=True. - Avec des proxies : Associez un jar de cookies avec une session persistante lorsque une tâche en plusieurs étapes nécessite les mêmes cookies et la même adresse IP de sortie du début à la fin.
Identifiants de Session et Détournement de Session
- Ce que porte le cookie : Généralement un identifiant de session que le serveur attribue lorsque la session est créée. OWASP recommande les cookies comme moyen de l'échanger.
- Pourquoi c'est important : Après la connexion, l'identifiant de session est temporairement équivalent à la méthode de connexion la plus forte utilisée par le site.
- Détournement : Si un attaquant obtient l'identifiant de session, il peut complètement usurper l'utilisateur. OWASP appelle cela le détournement de session, ou sidejacking.
- Renforcement : La valeur doit être dénuée de sens et avoir au moins 64 bits d'entropie. OWASP dit également que les cookies de session doivent définir
SameSite=StrictouSameSite=Lax. - Ne pas compter sur la fermeture du navigateur : OWASP déconseille de compter sur la fermeture du navigateur pour mettre fin à une session connectée.
Cookies de Session et Règles de Consentement de l'UE
Les règles de l'UE (Article 5(3) de la directive ePrivacy) exigent un consentement pour les cookies, sauf s'ils sont strictement nécessaires pour un service que l'utilisateur a explicitement demandé. L'Opinion 04/2012 du Groupe de travail Article 29 dit que les cookies d'authentification sont généralement des cookies de session et sont exemptés pour la durée d'une session. Les cookies d'entrée utilisateur basés sur la session, tels qu'un panier d'achat, sont exemptés sur la même base. Les cookies de connexion persistants qui maintiennent un utilisateur connecté à travers les sessions de navigateur ne sont pas exemptés.