(PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string -- Protège les caractères spéciaux d'une commande SQL pour MySQL
La chaîne à échapper
La ressource de connexion MySQL
mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string, en prenant en compte le jeu de caractères courant de la connexion link_identifier. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Si des données binaires doivent être insérées, cette fonction doit être utilisée.
mysql_real_escape_string() appelle la fonction mysql_escape_string() de la bibliothèque MySQL qui ajoute un slashe aux caractères suivants : NULL, \x00, \n, \r, \, ', " et \x1a.
Cette fonction doit toujours (avec quelques exceptions) être utilisée pour protéger vos données avant d'envoyer la requête à MySQL.
Note : Si magic_quotes_gpc est activée, appliquez d'abord la fonction stripslashes() à vos données. Utiliser cette fonction sur des données qui ont déjà été protégées, les protègera une deuxième fois.
Si cette fonction n'est pas utilisée pour protéger vos données, la requête sera vulnérable aux attaques par injection SQL.
Exemple 2. Un exemple d'attaque par injection SQL
La requête envoyée à MySQL :
Cela permet à n'importe qui de s'identifier sans mot de passe valide. |
Exemple 3. Meilleure pratique L'utilisation de la fonction mysql_real_escape_string() sur chaque variable évite les injections SQL. Cet exemple démontre la méthode la plus propre pour envoyer une requête à la base, indépendamment de votre configuration de guillemets magiques.
La requête s'exécute maintenant correctement et les attaques par injection SQL ne fonctionnent plus. |
Note : mysql_real_escape_string() n'échappe ni %, ni _. Ce sont des jokers en MySQL si combinés avec LIKE, GRANT, ou REVOKE.
Voir aussi mysql_client_encoding(), addslashes(), stripslashes() ainsi que les directives magic_quotes_gpc et magic_quotes_runtime.
Précédent | Sommaire | Suivant |
mysql_query | Niveau supérieur | mysql_result |