Utilisation des Cookies avec Django
Les données sont stockées côté serveur ; l’envoi et la réception des cookies sont transparents. Les cookies contiennent un identifiant de session, et non pas les données elles-mêmes.
Les cookies sont persistants (sauf si vous ne avez défini votre navigateur sur « bloque toujours les cookies et données de sites web ») car ils sont sous forme de fichiers (sinon ils restent en memoire) sur mais non permanent (le navigateur client (le vôtre) les suppriment en cas d’obsolescences ou si vous décidé de « supprimer des données et cookies stockés »).
La raison de définir une période d’expiration à longue durée est d’éviter des problèmes au cas où un utilisateur ferme le navigateur ou place un signet sur une page, puis recharge cette page depuis le cache du navigateur. Sans cookies persistants, la soumission du formulaire échoue dans ces situations.
Ils permettent d'optimiser les performances de la navigation.
Ici, dans Django (comme dit ci-dessus), ils ne servent qu'a maintenir l'authentification des utilisateurs et l'ouverture leurs sessions tout au long de la navigation.
Certains navigateurs (spécifiquement Internet Explorer) peuvent prohiber l’utilisation de cookies persistants ou posséder un index de conteneur de cookies corrompu sur disque, ce qui fera échouer les contrôles de protection contre le « Cross site request forgery (CSRF) » (et parfois de manière intermittente).
De plus, ils peuvent être utilisés par l'hébergeur de ce site (OVH) afin d'assurer le bon déroulement de votre visite et de réaliser des statistiques d'audience.
Pourquoi un protocole sécurisé (HTTPS) ?
Tout site Web autorisant des utilisateurs à se connecter devrait imposer l’accès HTTPS généralisé pour éviter de transmettre des jetons d’accès en clair. Dans Django, les jetons d’accès contiennent l’identifiant et le mot de passe, le cookie de session et les jetons de réinitialisation de mot de passe.
La protection de zones sensibles comme les comptes des utilisateurs ou l’interface d’administration n’est pas suffisant, car le même cookie de session est utilisé à la fois pour HTTP et HTTPS. Votre serveur Web doit rediriger tout le trafic HTTP vers HTTPS et ne transmettre que les requêtes HTTPS à Django.