Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Failles MySql



  1. #1
    roms42

    Exclamation Failles MySql

    Bonjour à tous,
    Towl a commencé de me parler de failles MySql ici: discussion
    Quelqu'un peut-il m'expliquer un peu mieux les failles connues et les moyens des les éviter svp?

    A+

    -----


  2. Publicité
  3. #2
    Towl

    Re : Failles MySql

    Tiens on parle de moi

    Les failles SQL sont généralement des SQL Injections. Le but est d'injecter des données spécialement formée afin de modifier les requêtes.

    Un petit exemple valant mieux qu'un long discours (volontairement ultra simpliste et assez peu réel) :
    Voici un code vulnérable à ce type d'attaque :
    Code:
    $query = 'SELECT user, pass FROM users WHERE user=$user and pass=$pass';
    $res = mysql_query($squery);
    if(mysql_num_rows($res) != 1){print("Bad login";}
    On suppose que $user et $pass sont des données entrées dans un formulaire.
    Supposons que l'on entre ces données la :
    $user = admin or 1 = 1 limit 1 #
    pass = titi

    On a alors $query qui devient :
    SELECT user, pass FROM users WHERE user=admin or 1 = 1 limit 1 # and pass=titi
    Le # étant le commentaire avec MySQL (à vérifier ), on a alors la requete :
    SELECT user, pass FROM users WHERE user=admin or 1 = 1 limit 1
    Et cette requete à la particularité de toujours renvoyer 1 seule ligne si l'utilisateur existe. On se retrouve donc connecté en administrateur



    La faille vient donc des données entrées par l'utilisateur. La s'en est une simple, mais elle peuvent devenir tres vite plus sioux (la par exemple il est possible de s'amuser à vider toutes tes tables).
    C'est pourquoi il est nécessaire de n'authoriser que les caractères nécessaires lors des paramètres récupéré d'un utilisateur (voir du coté des expression régulieres):
    - un nom d'utilisateur : que des lettres, des chiffres, et peut etre un espace
    - une date : que des chiffres et des /
    - penser à echapper les caractères (addslashes() et / ou mysql_real_escape_string())

    Une meilleure version du code si dessous (flemme de voir comment le nom des vrai méthode en php)
    Code:
    /* On ajoute les \ si les magic quotes sont à off */
    if (! $magic_quotes)
    {
    	$user = addslashes($user);
    	$pass = addslashes($pass);
    }
    
    /* On vérifie que user ne contient pas de caracteres interdit */
    /* Expression reguliere : [a-zA-Z0-9]+ (un ou plusieur chiffre / lettre maj-min */
    if (! preg_match("[a-zA-Z0-9]+", $user)
    {
    	print "Bad Username";
    }
    $query = "SELECT user, pass FROM users WHERE user='$user' and pass='$pass'";
    $res = mysql_query($squery);
    if(mysql_num_rows($res) != 1){print("Bad login";}
    Comme tu le vois, cela fait un code un peu plus lourd, mais bon en général, on fait des fonctions comme valid_int(), valid_str, ... qui fera tout le nécessaire.

    La c'était un exemple avec le SQL, mais toute les fonctions sont potentiellement vulnérable : fopen(), system()...
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  4. #3
    roms42

    Thumbs up Re : Failles MySql

    Merci pour la réponse claire et rapide Towl

    Ca va clairement compliquer mes codes ça

    Comme tu le vois, cela fait un code un peu plus lourd, mais bon en général, on fait des fonctions comme valid_int(), valid_str, ... qui fera tout le nécessaire.
    Je vais mettre ça dans mon fichier de connexion et puis les include feront le reste

    A+

  5. #4
    Towl

    Re : Failles MySql

    Ah oui, j'oubliais l'essentiel quand on parle de faille de sécurité
    L'utilisation (ou la tentative d'utilisation) de ces techniques et punie par les articles du code pénal :
    323-1
    Le fait d'accéder ou de se maintenir, frauduleusement, dans tout ou partie d'un système de traitement automatisé de données est puni de deux ans d'emprisonnement et de 30000 euros d'amende.


    Lorsqu'il en est résulté soit la suppression ou la modification de données contenues dans le système, soit une altération du fonctionnement de ce système, la peine est de trois ans d'emprisonnement et de 45000 euros d'amende.
    323-2
    Le fait d'entraver ou de fausser le fonctionnement d'un système de traitement automatisé de données est puni de cinq ans d'emprisonnement et de 75000 euros d'amende.
    323-3
    Le fait d'introduire frauduleusement des données dans un système de traitement automatisé ou de supprimer ou de modifier frauduleusement les données qu'il contient est puni de cinq ans d'emprisonnement et de 75000 euros d'amende.
    323-3-1
    Le fait, sans motif légitime, d'importer, de détenir, d'offrir, de céder ou de mettre à disposition un équipement, un instrument, un programme informatique ou toute donnée conçus ou spécialement adaptés pour commettre une ou plusieurs des infractions prévues par les articles 323-1 à 323-3 est puni des peines prévues respectivement pour l'infraction elle-même ou pour l'infraction la plus sévèrement réprimée.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  6. #5
    roms42

    Smile Re : Failles MySql

    juriste en plus?

  7. A voir en vidéo sur Futura
  8. #6
    Towl

    Re : Failles MySql

    Oula non absolument pas Je connais juste les quelques articles obligatoire dans la sécurité informatique
    Ca me permet surtout d'avoir une réponse standard quand je donne certains type d'information, qui me permet d'affirmer qu'il s'agissait d'info à caractère informatif et que je déconseille très fortement l'utilisation de ces méthodes.
    La sécurité informatique étant (malheureusement) une activité assez 'sur le fil du rasoir', je préfère me proteger le plus possible dans mes interventions
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  9. Publicité
  10. #7
    roms42

    Cool Re : Failles MySql

    j'ai une question qui n'a rien à voir (php):
    est-ce que tu sais comment connaître la largeur d'un caractère?
    je m'explique: j'ai besoin de connaître la longueur d'une chaine en pixel pour un affichage. Pour l'instant j'applique un coéfficient au nombre de lettre mais c'est pas top...

  11. #8
    Towl

    Re : Failles MySql

    Il est quasiment impossible pour le serveur de connaitre la taille en pixel affichée par un navigateur : un site web ne fait que des suggestions de polices / taille de caractères, c'est le navigateur qui prend la décision finale. Si l'utilisateur n'a pas la police demandée, il va en utiliser une autre. Si l'utilisateur avait demandé d'avoir une police en taille 12 et +, il va augmenter la taille pour correspondre a ces critères.
    Bref, ca reste assez aléatoire

    Peut etre que le javascript le permet, mais cela m'etonnerais. Mais dans tous les cas, il y a souvent une manière de faire plus propre (fixer les tailles de caractère pour la mise en page n'est jamais très bon)
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  12. #9
    roms42

    Re : Failles MySql

    en fait je vais plutôt utiliser la fonction mysql_real_escape_string():

    mysql_real_escape_string(): doc

  13. #10
    Towl

    Re : Failles MySql

    Oui, c'est la plus adaptée, mais seulement pour les requetes MySQL.
    Si tu as des entrées qui te servent ailleurs que pour la base de données, (nom d'un fichier à ouvrir, ou autre), il faut utiliser addslahes().
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

Sur le même thème :

Discussions similaires

  1. Failles normales et failles inverses
    Par Kathrina dans le forum Géologie et Catastrophes naturelles
    Réponses: 6
    Dernier message: 23/11/2011, 14h00
  2. MySQL
    Par bous dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 13/03/2008, 17h29
  3. MS Access et MYSQL
    Par Electrobobo dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 25/09/2007, 14h27
  4. ActiveX MySQL
    Par Momobulle dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 30/08/2007, 09h41
  5. mysql 4.0.15
    Par [RV] dans le forum Internet - Réseau - Sécurité générale
    Réponses: 0
    Dernier message: 12/09/2003, 05h46