Problème mysql_real_escape_string php

Résolu
dallap -  
 dallap -
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

Utilisateur anonyme
 
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   Statut Membre Dernière intervention   20
 
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   Statut Membre Dernière intervention   20
 
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
dallap
 
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
Utilisateur anonyme
 
mais oui justement tu peux la laisser dans la session sans protection et tu la protégeras lorsque tu feras appel à mysql
0
dallap
 
ok merci beaucoup à tous les 2!
0