Injection SQL, mysql_real_escape et user Nobody
Bonjour à tous,
J'ai programmé un petit script qui permet à un utilisateur de mon site ayant perdu son mot de passe de connection de pouvoir le récupérer en tapant simplement son adresse email.
Le script vérifie d'abord que le cryptogramme visuel correspond (pour éviter le brute force ou les bots), puis que le email entré figure bien dans la base de données, et seulement ensuite il envoit le mot de passe par email.
Il y a 2 pages : le formulaire d'un coté, et la page contenant le script de l'autre.
Voici le début du script de traitement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
include "crypt/functions.php";
//Vérification de la validation du formulaire + remplissage du champs email
// Si le code généré est le même que celui qu'on a donné...
if (chk_crypt($_POST['code']))
{
if (isset($_POST['email']) && !empty($_POST['email']))
{
//Conditions remplies, connexion à la BDD
$mail=($_POST['email']);
mysql_connect("localhost", "XXXXX", "XXXXX"); // Connexion à MySQL
mysql_select_db("XXXXXX"); // Sélection de la base
// Requête sur la BDD = table membre
$requete_membres = "SELECT ID, prenom, nom, email FROM tablemembre WHERE email='$mail'";
$membres = mysql_query($requete_membres) or exit(mysql_error());
$nb = mysql_num_rows($membres); |
On m'a rapidement conseillé d'utiliser :
Code:
$mail=mysql_real_escape_string($_POST['email']);
Plutot que
Code:
$mail=($_POST['email']);
Ce pour éviter les injections SQL douteuses :)
Mon script avec $mail=($_POST['email']); marche parfaitement. Des que j'utilise l'instruction mysql_real_escape_string j'ai droit à l'erreur suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/XXXXX/public_html/connexion.php on line 13
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 14
Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 15
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/XXXXX/public_html/connexion.php on line 15
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 20
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/XXXXX/public_html/connexion.php on line 20
Access denied for user 'nobody'@'localhost' (using password: NO) |
Quelqu'un a t il une idée du problème ? Est ce que je fais une mauvaise utilisation de l'instruction mysql_real_escape ?
Est il possible de donner des droits à l'user nobody ?
J'avoue être un peu perdu sur le coup.
Cordialement,
Philippe