Résoudre les défauts de mysql_real_escape_string()
Malgré son utilisation généralisée dans les applications PHP, certains ont soulevé des inquiétudes concernant les vulnérabilités de sécurité de mysql_real_escape_string( ). Cette fonction est conçue pour empêcher les attaques par injection SQL en échappant aux caractères spéciaux dans les entrées utilisateur.
Mysql_real_escape_string() est-il totalement inadéquat ?
La documentation de l'API MySQL C reconnaît un potentiel problème avec mysql_real_escape_string(). Il suggère d'éviter l'utilisation des instructions SET NAMES/SET CHARACTER SET pour modifier le jeu de caractères de la connexion. Au lieu de cela, la fonction mysql_set_character_set() doit être appelée avant d'utiliser mysql_real_escape_string().
Proof Code
La fonction PHP mysql_set_charset() modifie le jeu de caractères utilisé par mysql_real_escape_string (). Ceci est illustré dans l'extrait de code suivant :
<?php // Connect to MySQL and select the database $link = mysqli_connect("localhost", "user", "password", "database"); // Set the character set for the connection mysql_set_charset($link, "utf8"); // Escape the input using mysql_real_escape_string() $escaped_input = mysql_real_escape_string($link, $input); // Use the escaped input in a SQL query $query = "SELECT * FROM table WHERE field = '$escaped_input'";
En suivant cette approche, le jeu de caractères utilisé par mysql_real_escape_string() peut être explicitement défini, garantissant que les caractères spéciaux sont correctement échappés.
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!