`mysql_real_escape_string` est-il une défense fiable contre l'injection SQL ?

DDD
Libérer: 2024-10-26 05:00:31
original
713 Les gens l'ont consulté

Is `mysql_real_escape_string` a Reliable Defense Against SQL Injection?

Les inconvénients de mysql_real_escape_string

Bien que mysql_real_escape_string fournisse une forme de filtrage des données d'entrée pour empêcher les attaques par injection SQL, ses limites méritent attention.

Concaténation de requêtes :
Comme mentionné, la concaténation de requêtes à l'aide de mysql_real_escape_string ne protège pas entièrement contre l'injection SQL. Prenons l'exemple suivant :

mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));
Copier après la connexion

Une entrée telle que "5 OR 1=1" peut contourner les protections fournies par mysql_real_escape_string en raison d'une utilisation incorrecte, en traitant une valeur numérique comme une chaîne.

Portée étroite :
mysql_real_escape_string est conçu spécifiquement pour modifier les valeurs de chaîne destinées à être incluses dans des chaînes entre guillemets dans une instruction SQL.

$value = mysql_real_escape_string($value, $link);
$sql = "... `foo` = '$value' ...";
Copier après la connexion

S'il est utilisé en dehors de ce contexte étroit, mysql_real_escape_string peut par inadvertance créer des erreurs de syntaxe ou des vulnérabilités XSS.

Différences de jeu de caractères :
Une définition incorrecte du codage de la connexion à la base de données peut introduire des vulnérabilités. L'utilisation de mysql_query("SET NAMES 'utf8'", $link) pour définir le codage des caractères peut entraîner des écarts entre la façon dont l'API mysql_ gère les chaînes et la façon dont la base de données les interprète.

Implémentation incorrecte :
mysql_real_escape_string est sujet à une utilisation incorrecte, telle que :

  • L'appliquer à des valeurs non placées entre guillemets
  • L'inclure dans la requête SQL elle-même
  • L'interpréter mal en remplacement des instructions préparées

Bien que mysql_real_escape_string puisse fournir une protection contre les attaques par injection lorsqu'il est utilisé correctement, il est recommandé d'adopter des techniques plus robustes, telles que les instructions préparées, pour garantir une sécurité complète.

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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!