|
(PHP 4 >= 4.3.0, PHP 5)
mysql_real_escape_string -- Protège les caractères spéciaux d'une commande SQLmysql_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.
La chaîne à échapper.
La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée.
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 des guillemets magiques.
La requête s'exécute maintenant correctement et les attaques par injection SQL ne fonctionnent plus. |
Note : Une connexion MySQL est nécessaire avant d'utiliser la fonction mysql_real_escape_string(), sinon, une erreur de niveau E_WARNING sera générée, et FALSE sera retourné. Si link_identifier n'est pas défini, la dernière connexion MySQL est utilisée.
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.
Note : 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.
Note : mysql_real_escape_string() n'échappe ni %, ni _. Ce sont des jokers en MySQL si combinés avec LIKE, GRANT, ou REVOKE.
mysql_client_encoding() |
addslashes() |
stripslashes() |
The magic_quotes_gpc directive |
The magic_quotes_runtime directive |
Précédent | Sommaire | Suivant |
mysql_query | Niveau supérieur | mysql_result |
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:52