Journal du Net > Développeur > Technos .NET >  Technos .net > cookies et ASP.NET
Pratique
 
11/07/2007

Cookies et ASP.NET

Petits fichiers universellement connus, les cookies sont des agents indispensables à la convivialité de tout site. Il existe des bibliothèques ASP.NET qui permettent de les utiliser très simplement.
  Envoyer Imprimer  

 
En savoir plus
 
 
 

Les cookies sont de petits fichiers textes envoyés par le serveur d'un site Internet et stockés par le navigateur Web sur le disque dur du visiteur du site. Les cookies permettent aux applications Web de stocker des informations spécifiques à l'utilisateur. Ainsi, lorsque le visiteur revient sur le site, il ne lui est plus nécessaire de taper à nouveaux des informations telles que son nom et son mot de passe pour se faire reconnaître, puisqu'ils sont automatiquement envoyés par le cookie.

Les cookies sont largement utilisés pour simplifier la vie des visiteurs, par exemple pour garder en mémoire la personnalisation d'un site (comme la page d'accueil de Netvibes). Et ils sont bien sûr utilisés intensivement par les sites de commerce électronique afin de conserver les préférences de l'utilisateur (par exemple les options qu'il a cochées, les paniers d'achat qu'il a remplis) afin de lui éviter de les ressaisir. Mais ils permettent aussi d'étudier le comportement du consomateur pour pouvoir cibler, personnaliser les offres.

Les cookies ont une taille limitée à 4096 octets. Les navigateurs restreignent le nombre de cookies provenant d'un site à 20 et le nombre de cookies total à 300. Lorsque le navigateur a atteint le nombre maximum, il écrit les nouveaux sur les anciens. Un cookie a une durée de vie limitée (de 0 à 50 ans...) fixée par le concepteur du site. Si on ne définit pas de limite d'expiration pour le cookie, il expire en même temps que la session utilisateur.

Bonnes pratiques

Idéalement, il ne faut pas stocker d'information sensible dans un cookie. Il doit contenir une chaîne aléatoire (identifiant de session) unique et difficilement interprétable, valide uniquement pendant un temps donné. Seul le serveur doit pouvoir être en mesure d'associer cet identifiant aux informations concernant

"il ne faut pas stocker d'information sensible dans un cookie"

l'utilisateur (stockées sur une base de données côté serveur). Ainsi, après expiration du cookie, l'identifiant de session sera inutile et le cookie ne contiendra aucune information concernant l'utilisateur.

En aucun cas le cookie ne doit contenir directement les informations concernant l'utilisateur et sa durée de vie doit être la plus proche possible de celle correspondant à la session de l'utilisateur. Un cookie n'a donc rien de dangereux en soi s'il est bien conçu et si l'utilisateur ne donne pas d'informations personnelles.

Cookies en ASP.NET

ASP.NET est un ensemble de technologies de programmation Web créé par Microsof pour créer des sites Web dynamiques, des applications Web ou des Web services.

Pour réaliser des cookies en ASP.NET, ce sont les objets Request et response qui sont utilisés. L'objet Request permet de lire tout ce qui a été renvoyé par le navigateur client, comme les formulaires, les cookies. Inversement, l'objet Response permet d'envoyer des informations au client, comme le fait d'écrire du texte dans une page ou d'écrire dans des Cookies.

Ecrire un cookie

Dans la page ASP.NET dans laquelle on souhaite écrire un cookie, les propriétés sont assignées à un cookie dans la collection Cookies.

L'exemple de code suivant montre un cookie nommé Info_utilisateur avec les valeurs des sous-clés Identifiant et derniere_visite définies. Il définit également l'heure d'expiration au lendemain.

 

Visual Basic:
Response.Cookies("Info_utilisateur")("Identifiant") = 
  "ID-compliqué" 
Response.Cookies("Info_utilisateur")("derniere_visite") =
  DateTime.Now.ToString() 
Response.Cookies("Info_utilisateur").Expires = 
  DateTime.Now.AddDays(1) 

 

C#
Response.Cookies["Info_utilisateur"]["Identifiant"] = 
  "ID-compliqué"; 
Response.Cookies["Info_utilisateur"]["derniere_visite"] = 
  DateTime.Now.ToString(); 
Response.Cookies["Info_utilisateur"].Expires = 
  DateTime.Now.AddDays(1);

Pour lire un cookie

L'exemple suivant lit un cookie nommé Info_utilisateur, puis lit la valeur de la sous-clé nommée Identifiant.

 

Visual Basic:
If (Request.Cookies("Info_utilisateur") IsNot Nothing) 
Then 
 Dim Info_utilisateur As String 
 If (Request.Cookies("Info_utilisateur ")("Identifiant") 
 IsNot Nothing) Then
  Info_utilisateur = 
  Request.Cookies("Info_utilisateur")("Identifiant") 
 End If 
End If 

 

C#
if (Request.Cookies["Info_utilisateur"] != null) 
{
 string Info_utilisateur; 
 if (Request.Cookies["Info_utilisateur"]["Identifiant"]
  != null) 
 { Info_utilisateur = 
  Request.Cookies["Info_utilisateur"]["Identifiant"]; } 
} 

Supprimer un cookie

 
En savoir plus
 
 
 

Il n'est pas possible de supprimer directement un cookie sur l'ordinateur d'un utilisateur. Mais on peut donner au navigateur de l'utilisateur l'ordre de supprimer le cookie en réglant la date d'expiration de ce cookie sur une date révolue. La prochaine fois que l'utilisateur soumettra une demande à une page dans le domaine où se trouve le cookie, le navigateur jugera que le cookie a expiré et le supprimera.

L'exemple de code suivant montre comment affecter à un cookie une date d'expiration révolue.

 

Visual Basic:
If (Not Request.Cookies("Info_utilisateur") Is Nothing) 
 Then 
 Dim myCookie As HttpCookie 
 myCookie = New HttpCookie("Info_utilisateur") 
 myCookie.Expires = DateTime.Now.AddDays(-1D) 
 Response.Cookies.Add(myCookie) 
End If 

 

C#
if (Request.Cookies["Info_utilisateur"] != null) 
{
 HttpCookie myCookie = new HttpCookie("Info_utilisateur"); 
 myCookie.Expires = DateTime.Now.AddDays(-1d); 
 Response.Cookies.Add(myCookie);
}

JDN Développeur Envoyer Imprimer Haut de page
Dans quel type de structure préférez-vous travailler ?

Une SSII internationale

Un prestataire national ou local

Un éditeur

Une DSI

En indépendant

Tous les sondages

ANNUAIRES