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 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 :
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!