Maison >base de données >tutoriel mysql >`mysqli_real_escape_string` est-il suffisant pour empêcher les attaques par injection SQL ?

`mysqli_real_escape_string` est-il suffisant pour empêcher les attaques par injection SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-20 00:41:12243parcourir

Is `mysqli_real_escape_string` Enough to Prevent SQL Injection Attacks?

"mysqli_real_escape_string" est-il suffisant pour prévenir les attaques SQL ?

Le code fourni utilise mysqli_real_escape_string pour se protéger contre les injections SQL. Cependant, il est crucial de noter que cette fonction à elle seule est insuffisante pour une protection complète.

Vulnérabilité à l'injection SQL

Malgré l'utilisation de mysqli_real_escape_string, le code reste sensible aux attaques par injection SQL. . En effet, il utilise la concaténation de chaînes pour assembler la requête SQL, ce qui permet aux attaquants de manipuler la requête en injectant du code malveillant via les entrées du formulaire.

Solution recommandée : déclarations préparées

La méthode la plus efficace pour empêcher les injections SQL consiste à utiliser des instructions préparées. Ils séparent les paramètres de données des instructions de requête, éliminant ainsi la possibilité de contamination. Voici un exemple :

$stmt = $db_con->prepare("INSERT INTO `users` (`email`, `psw`) VALUES (?, ?)");
$stmt->bind_param("ss", $email, $psw);
$stmt->execute();

Mesures de sécurité supplémentaires

Dans les cas où les déclarations préparées ne sont pas réalisables, envisagez :

  • Validation de la liste blanche : Restreindre la saisie de l'utilisateur à un ensemble prédéfini de valeurs autorisées valeurs.
  • Casting de type : Assurez-vous que les valeurs sont correctement converties dans leurs types prévus, empêchant ainsi l'exécution de code malveillant.
  • Désactivez les instructions préparées émulées : Si vous utilisez MySQL, définissez $db_con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); pour améliorer la sécurité.

En mettant en œuvre ces mesures, vous pouvez améliorer considérablement la sécurité de votre application contre les injections SQL et autres attaques SQL.

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