Maison  >  Article  >  développement back-end  >  Comment empêcher l'injection SQL en PHP

Comment empêcher l'injection SQL en PHP

(*-*)浩
(*-*)浩original
2019-09-19 11:06:374936parcourir

Vous devez empêcher l'injection SQL lors de l'interrogation de la base de données

Comment empêcher l'injection SQL en PHP

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&#39;reilly?";

// 输出: Is your name O\&#39;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=&#39;%s&#39; and xx=&#39;%f&#39;",array($id,$username,$xx))->select();

$Model->where("id=%d and username=&#39;%s&#39; and xx=&#39;%f&#39;",$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!

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