Sécurité: authentification et cookies

Répondre
mobman02
le 25/04/2005 à 16:43
mobman02
Salut a tous,
désoler de reposer une question qui doit etre recurante mais je me pose le probleme de la connexion et de l'authentification.

J'ai lu et relu l'excellent tuto sur la sécuriter de phpteam:
http://www.phpteam.net/component/option,com_content/task,view/id,44/Itemid,73/

Et j'en conclus que l'utilisation de cookies est risquée.

Mais ! Comment faire donc, si je veut que, une fois mon visiteur (membre) connecté au site, il n'est plus a se réidentifier a chaque fois qu'il revient ?

Comme ici quoi, comment procédé vous ?
Je n'ai pas été voir mon cookies,
mais, quoi qu'on fasse, un cookies ne peu pas identifier une personne...

Il faudrais mettre le login et le pass dans le cookies, c'est ce que vous faite ?
ya pas de danger ?
http://damienalexandre.fr/
LA GLOBULE
le 25/04/2005 à 17:09
LA GLOBULE
Ici, c'est un cookie qui fait qu'un membre revienne connecté.

Et dans ce cookie, je stocke un md5 (fait à partir de données différentes pour chaque membre).
mobman02
le 25/04/2005 à 18:56
mobman02
Donc tu defini un md5 a chaque membre, et il suffit a le connecter ?

Mais il n'y a pas un risque si l'utilisateur decouvre la valeur qui a été crypter, par exemple si c'est son pseudo, il lui suffit de crypter un autre pseudo en md5 et voila...

Je croit que je vais utiliser le mots de passe crypter en md5,
la dans se cas la je ne voit pas comment il pourrais y avoir des risques.
Je stock avec l'ID unique de l'utilisateur, car on sait jamais.

Merci ;)
http://damienalexandre.fr/
LA GLOBULE
le 25/04/2005 à 19:11
LA GLOBULE
Je croit que je vais utiliser le mots de passe crypter en md5,
la dans se cas la je ne voit pas comment il pourrais y avoir des risques.


Si tu stockes que le mot de passe, ca peut foirer si plusieurs membres ont le meme mot de passe.

Et sinon, non, je ne met pas que le pseudo dans ce md5.
Bzh
le 25/04/2005 à 19:12
Bzh
Plus tu cryptera d' informations, plus ton cookie sera sécurisé !!!!

N' hésites pas à ajouter au mot de passe, des valeurs totalement loufoque ( exemple: le prénom de ta grand mère )...

Par exemple, j' aime bien utiliser "time()"...

Ensuite, MD5(), à une comme taille de bloc "16", ce qui est peu comparé à d' autre algorithme de hachage !!!


mhash_keygen_s2k

(PHP 4 >= 4.0.4, PHP 5)
mhash_keygen_s2k -- Génère une clé
Description
string mhash_keygen_s2k ( int hash, string password, string salt, int bytes)

mhash_keygen_s2k() génère une clé de bytes octets de long, à partir d'un mot de passe. Cette fonction utilise l'algorithme Salted S2K, spécifié dans OpenPGP (RFC 2440). Cet algorithme va utiliser l'algorithme de hashage hash pour créer la clé. Le paramètre salt doit être différent et suffisamment aléatoire pour chaque clé que vous génèrez, afin de créer des clés différentes. Ce grain de sel réservira lorsque vous vérifierez les clés : c'est alors une bonne idée que de l'ajouter à la fin de la clé générée. salt doit avoir la longueur de 8 octets, et sera complété par des 0 si vous ne fournissez par suffisamment de données.

N'oubliez pas que les mots de passe fournis par les utilisateurs ne sont pas conseillé pour faire des clés cryptographique, étant donné que les utilisateurs normaux retiennent des mots de passe qu'ils peuvent saisir au clavier. Ces mots de passe utilisent uniquement 6 à 7 des 8 bits d'un caractère (voir moins). Il est vivement recommandé d'appliquer une fonction de transformation (comme celle-ci), à un mot de passe utilisateur.


Voici le lien de la fonction

Ciao...
mobman02
le 26/04/2005 à 00:36
mobman02
ok ok, je vais essayer de mettre plusieurs infos, en effet, c'est plus sur.

merci
http://damienalexandre.fr/
Bzh
le 28/04/2005 à 12:32
Bzh
La on en revient au danger d' enregistrer dans la base, les mots de passe hachés en md5() !!!

L' inconvénaniant du md5() est que plusieurs valeurs peuvent donner comme résultat le même md5().

Je m' explique:
<?php

$mot_de_passe = $_POST['mot_de_passe'];
$identifiant = $_POST['identifiant'];

//je passe la protection des variables (sql injection, etc...)

$mot_de_passe_base_de_donné = md5($mot_depasse);

$requette = 'SELECT id FROM base_utilisateur WHERE identiant="'.$identifiant.'" AND mot_de_passe="'.$mot_de_passe.'" LIMIT 2';

//etc...

?>


Si on suit cette logique, et bien plusieur mot de passe fonctionneront...

Car plusieur mot_de_passe peuvent donner las même valeur md5(). Or, si le mot de passe est enregistré en brut, et bien, seul le même mot de passe fonctionnera...

Je ne suis pas persuadé, que la méthode du mot de passe en md5() soit la méthode la plus sur.

Avec un peu de patience, en faisant un boucle, on arrive bien sur à trouver une valeur correspondant au md5() trouvé.

Ciao...
manu56
le 28/04/2005 à 14:41
manu56
je ne pense pas que stocker le mot de passe et le login soit une bonne solution si la personne change de mot de passe ou login... Moi j'utilise time() (que je stocke dans la bdd a chaque fois qu'un membre "cré un cookie"), son id crypté en md5() et un nombre crypté en md5() qui est créé aléatoirement et stocké quand un membre s'inscris.
Je pense que c'est assez sécurisé...
2pax cruz
le 29/04/2005 à 07:31
2pax cruz
En fait, si j'ai bien compris, vous bourrer vos cookies d'informatiosn totalements inutiles cryptées en md5 pour que l'utilisatuer ne sache pas refaire de cookie pareille ?
[2pax.cruz]
mojorisin
le 29/04/2005 à 08:55
mojorisin
La je m'insurge !!
En aucun cas l'algorythme md5 ne produira le même hachage avec des valeurs différentes. Seul le même mot de passe pour un utilisateur et un autre pourront produire le même hachage.
echo ’16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlbxq’|dc
Répondre
LoadingChargement en cours