Mysql_real_escape_string() est-il fatal ?
Malgré les allégations de manque de fiabilité, mysql_real_escape_string() reste un outil précieux pour créer vos propres instructions préparées. . Voici un aperçu de ses fonctionnalités et comment l'utiliser efficacement.
mysql_real_escape_string() expliqué
La documentation de l'API MySQL C indique : "Si vous devez modifier le caractère ensemble de la connexion, vous devez utiliser la fonction mysql_set_character_set() plutôt que d'exécuter un SET NAMES (ou SET CHARACTER SET) déclaration."
Cela signifie que pour utiliser correctement mysql_real_escape_string(), vous devez utiliser mysql_set_charset(). mysql_set_charset() de PHP reflète mysql_set_character_set() de MySQL.
Proof Code
<?php $mysqli = new mysqli("localhost", "username", "password", "database"); // Set the character set using mysql_set_charset() $mysqli->set_charset("utf8mb4"); // Prepared statement using mysql_real_escape_string() $stmt = $mysqli->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param('s', mysql_real_escape_string($_GET['username'])); $stmt->execute(); ?>
Dans cet exemple, mysql_set_charset() garantit que la connexion utilise le jeu de caractères utf8mb4. Cela permet à mysql_real_escape_string() de gérer correctement les caractères qui pourraient autrement être vulnérables à l'injection SQL.
Conclusion
Bien qu'il soit important de comprendre les limites de mysql_real_escape_string(), en utilisant en conjonction avec mysql_set_charset() vous permet de créer efficacement vos propres instructions préparées. En suivant ces étapes, vous pouvez atténuer les risques d'injection SQL et maintenir la sécurité de vos applications.
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!