OVH Cloud OVH Cloud

Le type de crypt MySQL et PHP

5 réponses
Avatar
maxx
Salut,

J'aimerai connaitre le type de chiffrement des mots de passe utilisés
pas MySQL.
En fait, je voudrais créer un programme permettant de générer des
mots de passe compatible avec MySQL.
Est ce quelqu'un a une syntax permettant de faire cela en php, ça
m'aiderai bien...

5 réponses

Avatar
ftc
Salut,

J'aimerai connaitre le type de chiffrement des mots de passe utilisés
pas MySQL.
En fait, je voudrais créer un programme permettant de générer des
mots de passe compatible avec MySQL.
Est ce quelqu'un a une syntax permettant de faire cela en php, ça
m'aiderai bien...


1) Attention MySQL change sans arret de méthode pour ses mots de passe,
les version 3, 4.0 et 4.1 sont incompatibles entre elles

2) Récupérer directement le mot de passe chiffré avec SELECT PASSWORD(
'LEMOTDEPASSE' );

Avatar
maxx
Merci pour la réponse.
En fait, mon but est de ne pas garder le mot de passe en clair dans une
SESSION par exemple (garder le mot de passe et son login à chaque
requete du client ). Donc, est ce qu'il est possible que MySQL est le
champ password en clair et par la suite de crypté le mot de passe par
php et de le comparer à celui de la table user de MySQL? Comme cela,
mon mot de passe est crypté dans la Session. (est ce que c'est la
bonne méthode???)
Avatar
ftc
Merci pour la réponse.
En fait, mon but est de ne pas garder le mot de passe en clair dans une
SESSION par exemple (garder le mot de passe et son login à chaque
requete du client ). Donc, est ce qu'il est possible que MySQL est le
champ password en clair et par la suite de crypté le mot de passe par
php et de le comparer à celui de la table user de MySQL? Comme cela,
mon mot de passe est crypté dans la Session. (est ce que c'est la
bonne méthode???)


J'ai peur de ne pas bien saisir ce que tu veux faire.

Le login et le mot de passe sont ceux de la connexion MySQL ou bien un
login et un mot de passe de connexion à ton application ?

Si ce sont les login et mot de passe MySQL de connexion à MySQL, je ne
vois pas vraiment de solution à moins de chiffrer le mot de passe, le
mettre en session et de le déchiffrer quand tu as besoin de l'utiliser.
Mais si quelqu'un accède aux données de session, il peut donc aussi
accéder à tes scripts et découvrir la méthode de chiffrement utilisée.
Il te faudra aussi gérer la façon de suivre l'utilisateur et ne pas se
reposer uniquement sur la session.

Si ce sont les logins et mots de passe de ton application, il ne faut
pas utiliser la fonction PASSWORD() de MySQL mais une fonction de
hachage à partir de ton application ( md5, sha1 ... ). Et dans ce cas,
je ne vois pas l'intéret de conserver le login et le mot de passe en
session, c'est même dangereux en cas de session hijacking.

Avatar
maxx
J'utilise les logins et mots de passe pour mon application et les
tables MySQL. Ainsi, j'ai une table d'authentification avec des champs
logins, password etc... qui me sert à mon application et la table
d'authentification de MySQL pour l'ensemble de mes requêtes sur la
base.
Je voudrai avoir le même type de chiffrement entre ces deux tables
afin que mes mots de passe ne circulent pas en clair dans mes sessions
lors des requêtes sur la base. Par cette methode, je fais circuler mon
mot de passe en chiffré dans mes sessions, mais l'authentification
echouera car le mot de passe déjà chiffré sera comparé à celui de
MySQL après un rechiffrement... :-(

Il est clair que je ne peux pas laisser le mot de passe en clair dans
les sessions, même chiffré en https...
C'est pour cela que je voulais mettre en clair les mots de passe dans
la table "user" de MySQL et le chiffrer moi même par mon application.
De cette maniere, mes deux tables d'authenfications ont les mêmes hash
de chiffrement et je les compare moi même par mon application.

En même temps, je peux utiliser un seul utilisateur pour mes requêtes
identifié par un "rôle" et une balise. Ensuite, gere mes
identification par mon application???
Avatar
ftc
J'utilise les logins et mots de passe pour mon application et les
tables MySQL. Ainsi, j'ai une table d'authentification avec des champs
logins, password etc... qui me sert à mon application et la table
d'authentification de MySQL pour l'ensemble de mes requêtes sur la
base.
Je voudrai avoir le même type de chiffrement entre ces deux tables
afin que mes mots de passe ne circulent pas en clair dans mes sessions
lors des requêtes sur la base. Par cette methode, je fais circuler mon
mot de passe en chiffré dans mes sessions, mais l'authentification
echouera car le mot de passe déjà chiffré sera comparé à celui de
MySQL après un rechiffrement... :-(


Le problème est que d'une part MySQL utilise une méthode de hachage non
standard et d'autre part l'extension MySQL de PHP attend que le mot de
passe lors de la connexion soit fournit en clair puisque c'est elle qui
va hacher celui-ci.

Il faudrait voir à recompiler l'extension MySQL pour PHP pour lui dire
de ne pas hacher le mot de passe avant de l'envoyer puisque celui-ci le
sera déjà.


En même temps, je peux utiliser un seul utilisateur pour mes requêtes
identifié par un "rôle" et une balise. Ensuite, gere mes
identification par mon application???


C'est la solution que j'aurai envisagé, tout dépend du niveau
d'isolation dont tu as besoin dans ton application. Le problème reste le
même, le mot de passe devra être indiqué en clair quelque part et que ce
soit dans un fichier de configuration ou bien dans la session, c'est du
pareil au même.