IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

Injection SQL, mysql_real_escape et user Nobody


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail=mysql_real_escape_string($_POST['email']);
    Plutot que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    essaye de deplacer le mysql_connect et mysql_select_db AVANT le mysql_real_escape_string

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    J'ai testé la manipulation que vous m'avez conseillée, sans succès. Les erreurs sont toujours les mêmes.

    Cordialement,
    Philippe

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Contrairement à mysql_escape_string(), mysql_real_escape_string() demande une connexion ouverte à la bdd pour s'exécuter. Il faut donc la placer en effet après la connexion.
    Les messages que tu reçois indiquent que cette connexion n'a pas pu se réaliser. Revois donc les paramètres de connexion à ta bdd.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 27
    Par défaut
    Merci à vous deux pour votre aide.

    La solution qui m'a été donnée par Fladnag était la bonne, je n'avais pas fait attention à une bête faute de frappe dans un des paramètres de connection.

    Honte à moi )

    Bonne soirée à tous.

    Philippe

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Citation Envoyé par Archeus
    La solution qui m'a été donnée par Fladnag était la bonne, je n'avais pas fait attention à une bête faute de frappe dans un des paramètres de connection.
    Loin de moi l'idée de ramener la couverture à moi, mais c'est moi qui t'ai demandé de revoir tes infos de connexion :
    Citation Envoyé par vg33
    Revois donc les paramètres de connexion à ta bdd.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL-SERVER] Déconnecter user d'une BD probleme de requête
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/06/2006, 08h19
  2. Réponses: 4
    Dernier message: 13/02/2006, 11h34
  3. Réponses: 20
    Dernier message: 03/02/2006, 10h55
  4. Réponses: 10
    Dernier message: 25/10/2005, 16h09
  5. [sql server] Deconnecter user inactif
    Par voodoo_mg dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/08/2005, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo