Maison  >  Article  >  développement back-end  >  Les fonctionnalités de connexion PHP et Mysql empêchent l'injection SQL

Les fonctionnalités de connexion PHP et Mysql empêchent l'injection SQL

小云云
小云云original
2018-02-27 10:40:051558parcourir

J'ai récemment découvert l'injection SQL et découvert que la fonction de connexion de nombreuses personnes utilise le nom d'utilisateur et le mot de passe saisis par l'utilisateur en même temps, combinés dans une instruction SQL, et la requête détermine s'il y a un résultat à déterminer si la connexion peut être effectuée. Par exemple :


  1. <?php  
    $username = $_POST[&#39;username&#39;];  
    $password = $_POST[&#39;password&#39;];  
    $sql = "select * from user where username=&#39;{$username}&#39; and password=&#39;{$password}&#39; ";  
    $this->db->query($sql);

Il est facile d'ajouter ' ou 1=1 -- injection dans le paramètre username Bien que ce ne soit qu'un exemple, de nombreux frameworks sont utilisés de nos jours. Si vous ne faites pas attention, l'instruction finale combinée sera similaire à celle-ci. Ne parlons pas du filtrage des paramètres d'entrée, de la liaison des paramètres, de l'analyse syntaxique et d'autres méthodes courantes pour gérer l'injection SQL. Nous pouvons changer la méthode de jugement :

  1. <?php  
    $username = $_POST[&#39;username&#39;];  
    $password = $_POST[&#39;password&#39;];  
    $sql = "select * from user where username=&#39;{$username}&#39; ";  
    $data = $this->db->query($sql);  
      
    ......  
      
    if($data[&#39;password&#39;] == $password){  
        //密码OK  
    }else{  
        //密码错误  
    }


De cette façon, les données sont d'abord trouvées, puis php lui-même est utilisé pour déterminer si le mot de passe correspond. Cela résout-il le problème ?

Recommandations associées :

10 méthodes recommandées pour empêcher l'injection SQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn