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

PHP & Base de données Discussion :

Tables vidées et injection mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut Tables vidées et injection mysql
    Bonjour, à tous,

    voilà j'ai subi récemment à deux reprises des attaques sur mon site.
    Ces attaques ont eu pour conséquences de supprimer des tables de ma bases de données.

    voici un exemple de mes requêtes, pouvez-vous me dire si elles sont bien protégées des injections mysql :

    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
    // Protège la variable avant l'insertion
    function quote_smart($value){
    // Stripslashes si nécessaire
            if (get_magic_quotes_gpc()){
                    $value = stripslashes_deep($value);
            }
    // Protection si ce n'est pas un entier
            if (!is_int($value)){
                    $value = "'" . mysql_real_escape_string($value) . "'";
            }
    return $value;
    }
    $sqly = sprintf("delete from flatforswap_adherent where id_adh=%s", quote_smart($_GET['id']));
    $reqy = mysql_query($sqly) or die('Erreur SQL : <br />'.$sqly);
     
    $sql_des = sprintf("delete from flatforswap_destination where id_adh=%s", quote_smart($_GET['id']));
    $req_des = mysql_query($sql_des) or die('Erreur SQL : <br />'.$sql_des);
     
    $sql_log = sprintf("delete from flatforswap_logement where id_adh=%s", quote_smart($_GET['id']));
    $req_log = mysql_query($sql_log) or die('Erreur SQL : <br />'.$sql_log);
    Merci d'avance pour votre aide.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ces attaques ont eu pour conséquences de supprimer des tables de ma bases de données.
    pouvez-vous me dire si elles sont bien protégées des injections mysql
    T'as pas l'impression que la réponse est dans la question ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre expérimenté
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 26

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Salut nels77, je l'ai bien testé mais je n'ai rien compris au rapport, de plus je me suis renseigné et il paraît que ce n'est pas fiable...

    Une remarque, pour écrire mon code, je me suis inspiré de cet note :

    Si elle n'est plus d'actualité et donc plus efficace, pourquoi la laisser toujours en ligne..

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Parce qu'elle est toujours valable, tant que tu utilises l'API mysql_. Ce n'est pas parce qu'on a inventé le robot-mixeur qu'on ne peut plus faire de soupe avec un moulin à légumes.
    Cela étant dit, l'API mysql_ est considérée comme obsolète et il est recommandé de passer à mysqli ou PDO. (Note : obsolète ne veut pas forcément dire que ça ne marche plus, ça veut dire que ça va disparaitre dans une prochaine version)

    A vue de nez, tes requêtes ont l'air propre. Es-tu sûr que le problème vient de là ? Pas d'interface PhpMyAdmin accessible facilement ? Tu es sur un hébergement dédié ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Par défaut
    Bonjour,

    Une petite ramarque sur ta fonction :

    Citation Envoyé par sam01 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function quote_smart($value){
    // Stripslashes si nécessaire
            if (get_magic_quotes_gpc()){
                    $value = stripslashes_deep($value);
            }
    // Protection si ce n'est pas un entier
            if (!is_int($value)){
                    $value = "'" . mysql_real_escape_string($value) . "'";
            }
    return $value;
    }
    Comme son nom l'indique, get_magic_quotes_gpc indique le paramétrage de quotes automatiques pour les paramètres GET, POST et COOKIE, d’où le GPC à la fin du nom de la fonction.
    Ta fonction n'as pas pour "unique" but de traiter les variables Get, Post et Cookie, puisqu'elle prend une variable en paramètre qui peut très bien être une variable autre que GPC.

    Ton test de stripslashes n'as donc rien à faire ici, tu devrai te faire une fonction de récupération de variable GPC qui, elle, posséderait ce test et le retirer de ta fonction de protection de paramètre de requêtes BDD.

Discussions similaires

  1. Table vidée de ma base de données mysql
    Par sam01 dans le forum Sécurité
    Réponses: 6
    Dernier message: 27/01/2015, 10h54
  2. [OpenOffice][Base de données] Tables vides en migrant de HSQL vers MySQL
    Par Macgiver75 dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 05/03/2014, 21h38
  3. Tables vides en migrant de HSQL vers MySQL
    Par Macgiver75 dans le forum Installation
    Réponses: 0
    Dernier message: 06/02/2014, 21h58
  4. [MySQL] PHP-MySQL: Insertion de donnée dans une table vide
    Par jrosenzw dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 07/03/2009, 02h11
  5. Probleme avec une table vide
    Par king dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/03/2004, 14h24

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