Maison > Article > développement back-end > Les fonctionnalités de connexion PHP et Mysql empêchent l'injection SQL
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 :
<?php $username = $_POST['username']; $password = $_POST['password']; $sql = "select * from user where username='{$username}' and password='{$password}' "; $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 :
<?php $username = $_POST['username']; $password = $_POST['password']; $sql = "select * from user where username='{$username}' "; $data = $this->db->query($sql); ...... if($data['password'] == $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 ?
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!