Maison > base de données > tutoriel mysql > `mysql_real_escape_string()` et `mysql_escape_string()` sont-ils suffisants pour sécuriser mon application Web contre l'injection SQL ?

`mysql_real_escape_string()` et `mysql_escape_string()` sont-ils suffisants pour sécuriser mon application Web contre l'injection SQL ?

Susan Sarandon
Libérer: 2024-12-13 03:16:14
original
772 Les gens l'ont consulté

Are `mysql_real_escape_string()` and `mysql_escape_string()` Enough to Secure My Web Application Against SQL Injection?

mysql_real_escape_string() et mysql_escape_string() sont-ils suffisants pour la sécurité des applications ?

Bien que ces fonctions puissent améliorer la protection des données, elles ne suffisent pas à protégez entièrement les applications Web de tous les risques de sécurité.

SQL L'injection

  • Mysql_escape_string() peut toujours vous rendre vulnérable aux attaques par injection SQL, en particulier si des données variables sont utilisées dans les requêtes.

Attaques LIKE SQL

  • Les requêtes LIKE avec des paramètres tels que "�ta%" peuvent être exploitées pour renvoyer tous les enregistrements ou révéler des informations sensibles, telles que des numéros complets de carte de crédit.

Exploits de jeu de caractères

  • Internet Explorer reste vulnérable aux exploits de jeu de caractères, qui peuvent donner à des acteurs malveillants contrôle de base de données à distance.

LIMIT Exploits

  • Mysql_real_escape_string() est inefficace contre les attaques d'exploit LIMIT, qui peuvent exécuter des requêtes SQL arbitraires en manipulant la valeur LIMIT.

Défense proactive : Déclarations préparées

  • Au lieu de s'appuyer uniquement sur En cas d'évasion, envisagez d'utiliser des instructions préparées pour empêcher une exécution SQL inattendue.
  • Les instructions préparées appliquent une syntaxe SQL valide côté serveur, atténuant ainsi les risques de vulnérabilités connues et inconnues.

Exemple de code

Voici une comparaison de mysql_escape_string() et des instructions préparées dans PHP :

// Escaping Method
$sql = sprintf("SELECT url FROM GrabbedURLs WHERE %s LIKE '%s%%' LIMIT %s",
               mysql_real_escape_string($argv[1]),
               mysql_real_escape_string($argv[2]),
               mysql_real_escape_string($argv[3]));

// Prepared Statement
$statement = $pdo->prepare('SELECT url FROM GrabbedURLs ' .
                           'WHERE ' . $column . '=? ' .
                           'LIMIT ' . intval($limit));
$statement->execute(array($value));
Copier après la connexion

Les instructions préparées, bien que légèrement plus longues à mettre en œuvre, offrent une protection supérieure contre les requêtes SQL malveillantes et réduisent la complexité du code.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal