Maison > Article > développement back-end > Comment empêcher l'injection SQL en PHP
Vous devez empêcher l'injection SQL lors de l'interrogation de la base de données
La méthode d'implémentation :
PHP est livré avec sa propre méthode Les instructions SQL peuvent être échappées et des barres obliques inverses sont ajoutées avant certains caractères lorsque cela est requis dans les instructions de requête de base de données. Ces caractères sont des guillemets simples ('), des guillemets doubles ("), des barres obliques inverses () et NUL (caractère NULL). (Apprentissage recommandé : Programmation PHP du débutant au maître)
string addslashes ( string $str )//该函数返回一个字符串
Exemple
<?php $str = "Is your name O'reilly?"; // 输出: Is your name O\'reilly? echo addslashes($str); ?>
ThinkPHP fournit automatiquement une protection de sécurité. Pour les données de type chaîne, ThinkPHP effectuera le traitement escape_string (real_escape_string, mysql_escape_string)
Pour éviter efficacement les problèmes d'injection SQL, recommandations officielles :
Essayez d'utiliser des tableaux pour les conditions de requête, ce qui est un moyen plus sûr
Si vous devez utiliser des conditions de requête de chaîne, utilisez le mécanisme de prétraitement ;
Utilisez la vérification automatique et ; mécanismes de complétion automatique pour le filtrage spécifique à l'application ;
Si l'environnement le permet, essayez d'utiliser PDO et utilisez la liaison de paramètres
Prétraitement conditionnel
. Cette méthode est similaire à l'insertion d'un espace réservé dans l'instruction de requête, puis à la transmission des paramètres sous la forme d'un tableau
Par exemple :
$Model->where("id=%d and username='%s' and xx='%f'",array($id,$username,$xx))->select(); $Model->where("id=%d and username='%s' and xx='%f'",$id,$username,$xx)->select();
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!