Modifier manuellement un cookie?

Fermé
Fruustyler - 2 mai 2009 à 17:43
 PHPsécurité - 5 oct. 2014 à 13:08
Bonjour,

Je modifie actuellement un site que je faisais en remplaçant les sessions par des cookies (à cause de problèmes de référencement par google).

Il y a un espace membre sur ce site. Dès qu'on se connecte, 3 cookies sont créés: 1 pour le nom, 1 pour l'id du compte, 1 pour les droits.

Ma question est simple: étant donné que les cookies sont sur l'ordinateur du client et que l'on peut les lire grâce à un logiciel de type Notepad, y'a pas moyen de modifier directement les informations?

Par exemple, quelqu'un se connecte sous son nom de compte avec les droits définis comme "0" ( = utilisateur), puis qu'il modifie manuellement le cookie en mettant "1" ( = administrateur du site), il ne risque pas de pouvoir ensuite se connecter comme administrateur?
A voir également:

4 réponses

Exact :)

Je voulais répondre moi-même au forum pour dire que c'était bon, plus la peine de répondre, il faut juste spécifier un emplacement de telle sorte à ce que le cookie soit accessible à tout le site, et non pas un dossier du site. C'est pour ça qu'une page placée dans un répertoire différent de celui contenant la page créant le cookie ne le reconnaissait pas.

Mais bon, tu as répondu trop vite!

En tout cas, merci du temps que tu m'as consacré :)
5
Bonjour

Si, mais il suffit que tu code convenablement les valeurs de tes cookies. Un petit malin peut facilement tenter de mettre 1 à la place de 0 dans un cookie 'administrateur' mais si ton programme exige la valeur 6538215, il y a peu de chances pour que le même petit malin la devine.
Ça n'arrêtera pas les vrais pros, bien sûr, mais si tu n'es pas la Banque de France ça peut peut-être te suffire
1
Ma question est : et si je suis la Banque de France ?

Concrétement je dispose d'un espace de connection sur un site full AJAX, et lors du chargement asynchrone de contenu (en l'occurence sous forme de "module") la page chargée via xmlHttpRequest contrôle la "légitimité" de la requète via premièrement les session et le cas échéant via les cookies.

Mon problème est justement au niveau de la sécurité, que je voudrais la plus avancée possible..
0
PHPsécurité
5 oct. 2014 à 13:08
Si tu veux de la sécurité, ne met pas ces informations dans des cookies.
Prends une base de données et utilise du PHP.
par exemple mets un ID de connexion dans le cookie(un truc 32bits pour être dur à cracker) et met le même dans la BDD. Lors de la connexion le PHP vérifie tout ça, crée un ID de connexion au hasard(par exemple tu crypte le timestamp, c'est complètement hasardeux)
0
Ok, merci. C'est vrai que c'est tout bête. Je peux aussi utiliser le md5 pour coder les ID, nom de compte et compagnie.

Maintenant, j'ai une autre question: pour qu'un cookie créé sur une page soit accessible sur une autre page, y'a-til une commande particulière à faire? Quelque chose à changer? Je précise que je suis en local, grâce à EasyPHP, avec Firefox.

Je m'explique: dans une page, j'ai ça:
setcookie(['name',$nom,time()+3600]);

Dans une autre page, j'ai simplement ça:
print ($HTTP_COOKIE_VARS['name']);

Mais ça renvoie un message comme quoi l'index "name" n'existe pas. Pourtant, chose bizarre, si je vérifie dans le repértoire "Cookies" de Firefox, le cookie "name" contenant la valeur demandée existe bien. Mais je ne peux pas y accéder autre part que sur la page où le cookie a été créé.

Je pensais qu'une fois le cookie créé, celui-ci serait directement accessible de n'importe quel page. Apparemment, non.

Est-ce à cause du fait que, dans la page où le cookie est créé, il y a quelques lignes de code PHP avant le "setcookie(...)"?? Pas d'HTML, attention, uniquement du PHP. M'enfin, je suis bien obligé de faire ça: il faut bien quelques lignes de codes afin de réaliser les requêtes SQL pour vérifier le mot de passe et sélectionner le nom de compte puis ensuite seulement créer le cookie contenant ce nom.

Alors, quelqu'un a une idée?
1
Je pensais qu'une fois le cookie créé, celui-ci serait directement accessible de n'importe quel page. Apparemment, non.
Je ne suis pas un pro des cookies, mais d'après ce que je vois dans la doc PHP
comme tu n'as pas précisé de 4ème paramètre, ton cookie n'est connu que dans le répertoire ou il a été créé. Les autres pages où tu le testes sont-elles dans le même répertoire que celui où tu l'as créé ?
0