Problème mysql_real_escape_string php

Résolu/Fermé
dallap - 21 mars 2011 à 13:44
 dallap - 21 mars 2011 à 15:54
Bonjour,

Sur mon site, l'utilisateur est invité a choisir un password lors de l'inscription puis d'aller à l'étape suivante. Il n'y a pas de requete à ce moment la mais j'aimerais sécuriser le mot de pass et le mettre dans une variable session pour la prochaine étape.

Voici mon code:
if( isset($_POST['password']))
$_SESSION['password'] = mysql_real_escape_string(stripslashes(md5($_POST['password'])));


malheuresement je n'ai pas encore de connexion mysql ouverte et j'ai le message suivant:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homez.221.... on line 51


que dois-je faire? Ouvrir la connexion mysql même si je n'insère aucune données (ce sera juste pour sécuriser le mot de passe) ou avez vous une autre solution?

merci! :)
A voir également:

3 réponses

salut,
oui cette fonction ne marche qu'avec la connexion mysql ouverte. Et déjà ta question (ton code) n'a pas de sens car la fonction mysql_real_escape_string sert à éviter d'exécuter un code sql présent dans une variable qui peut figurer dans une requête sql. Il y a donc forcement connexion à la base de donnée pour lancer la requête. Je crois que tu n'as pas bien compris ce qu'est l'injection sql.
structure: langage php > langage sql
donc le probleme est du au fait que php exécute un code sql, on peut donc
modifier le code sql par les variables php (injection).
Les fonctions php ne présentent pas de problème du à l'introduction du code dans une variable (si l'on ne fait pas appel à "eval()" qui exécute le code )
d'où ton mysql_real_escape_string ne sert à rien s'il n'y a pas de requête sql

@+
1
productif Messages postés 39 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 9 février 2017 20
21 mars 2011 à 14:40
Si je comprends bien la formule, ce n'est pas le mot de passe qui est stocké dans la variable de session, mais son empreinte MD5.

Le fonction md5 renvoie une chaîne de caractères tous compris dans [0-9 a-z A-Z + /]; par conséquent, ni mysql_real_escape_string, ni stripslashes ne devraient être nécessaires. Tu devrais pouvoir directement écrire sans risque:

$_SESSION['password'] = md5($_POST['password']);
0
productif Messages postés 39 Date d'inscription mardi 8 mars 2011 Statut Membre Dernière intervention 9 février 2017 20
21 mars 2011 à 14:42
Pardon, il ne fallait pas écrire [0-9 a-z A-Z + /], mais [0-9 A-F].
Ca ne change rien à la réponse.
0
merci pour vos réponse, mais ce que je souhaite faire c'est "protéger" la variable $_POST['password'] qui n'es pas encore sécurisée, puis la mettre dans la session.

Afin de protéger contre les injections sql en effet.
0
mais oui justement tu peux la laisser dans la session sans protection et tu la protégeras lorsque tu feras appel à mysql
0
ok merci beaucoup à tous les 2!
0