Sessions, cookies, hash.

WRInaute occasionnel
Salut à tous, WRInautes je viens ici pour vous parler d'un problème, et prendre votre avis sur la question.
Que pensez vous du système que je vais vous exposer :
Chaque utilisateur (n'appartenant pas à AOL) reçoit une somme de contrôle ainsi calculée :

Code:
md5($_SERVER['REMOTE_ADDR'].']'.$_SERVER['REMOTE_HOST'].'f'.$_SERVER['HTTP_ACCEPT_LANGUAGE'].'~'.$_SERVER['HTTP_X_FORWARDED_FOR'].'~'.$_SERVER['HTTP_VIA'].'~'.$_SERVER['HTTP_CLIENT_IP'].'~'.$_SERVER['HTTP_PROXY_CONNECTION'].$_SERVER['HTTP_USER_AGENT'].'~'.base_convert(date('Y'),10,17).'~'.$_SERVER['FORWARDED_FOR'].'~'.$_SERVER['X_FORWARDED_FOR'].'~'.$_SERVER['X_HTTP_FORWARDED_FOR'].'~'.$_SERVER['HTTP_FORWARDED'])

A partir de ce hash divisé en 8 parties j'extrait 8 entiers en base 10 auxquels j'ajoute 1701.
Je multiplie ces 8 entiers par un grand nombre premier (> 5 chiffres).
Je multiplie ces 8 nombres par un nombre aléatoire entre 1 et 1000.
J'ajoute à ces 8 nombre entiers 17.
Je convertis les 8 entiers en base 30.
Je les concatène avec pour séparateur un élément au hasard dans ce tableau : array('z','y','x','w','v','u')
J'envoie le cookie avec cette chaîne. (une chaîne de caractères complètement "aléatoire" a vue d'oeil.)
Ensuite lorsque le client possède un cookie je récupère mes 8 entiers en base 10.
Je soustrait 17, je divise par mon nombre premier et par les 8 entiers provenant du hash.
Si le résultat est un entier dans les 8 cas l'utilisateur est authentique et la session n'a pas été volée.
Qu'en pensez vous ? merci.
 
WRInaute discret
je sais pas, meme moi je trouve ça lourd ^^" et n'oublie pas que certains de ses parametres sont modifiables par l'utilisateur, mais pour le reste je sais pas... tous ces parametres sont peut-etre inutiles. Mais le sujet m'interesse ;)
 
WRInaute occasionnel
voici un exemple de la valeur retournée :
h2g16hx6jene0w4r3qsfz66n2e3y1fh38i1zbdg7p6v5ol6ggxqma8k

p59cpev4ctpjaz382ht0w75f2pfulhhablzqcnkcu9dqtbqxaks3e0


En rouge les 8 nombres entiers qui nous intéressent en base 30.
 
WRInaute occasionnel
Ah bon ? Pourquoi ? Le cookie est invisible pour un visiteur normal, c'est juste pour ceux qui tenteraient de l'intercepter et de le copier-coller chez eux.
 
WRInaute discret
J'ai un acces Internet uniquement grâce a mon smartphone que j'utilise comme modem (fuck la loi) et mon op change toutes les 10 secondes. Donc ton cookie ne marcheras plus
 
WRInaute occasionnel
si ton ip change plus de 2 fois d'affilée tu es redirigée vers une version du site sans cookie, ce qui est prévu dans mon script, notamment aussi pour les utilisateurs d'AOL.
 
WRInaute discret
ah d'accord :) Mais pour ton systeme, j'ai l'impression que tu te complique la vie, juste pour éviter une requete sql, après c'est que mon avis ^^"
 
WRInaute discret
Bah ton collier, c'est pour identifier éviterez le vol de sessions nan ? Bah dans ton cookie, tu met md5($_serveur['remoteaddr'].$mdp) et a chaque page tu recalcul le hash, si il est différents c'est qu'il a etait voler.
 
WRInaute occasionnel
oui mais comment tu fais puisque certains utilisateurs de smartphone et AOL ont une ip qui peut changer toutes les 10 secondes ?
 
WRInaute discret
Avec ma connexion seul le dernier nombre change (parfois l'avant+dernier..) donc tu hash que les trois premiers ;)
 
WRInaute occasionnel
et dans ce cas tu as 255x plus de chance d'avoir 2 personnes qui ont le meme hash, et de plus, chez aol il n'y a pas que le dernier id qui change... c'est pas fiable...a mon sens.
 
Discussions similaires
Haut