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

Comment empêcher l'injection SQL en PHP

(*-*)浩
Libérer: 2023-02-24 12:28:01
original
4980 Les gens l'ont consulté

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 )//该函数返回一个字符串
Copier après la connexion

Exemple

<?php
$str = "Is your name O&#39;reilly?";

// 输出: Is your name O\&#39;reilly?
echo addslashes($str);
?>
Copier après la connexion

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();
Copier après la connexion

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!

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal