Maison >base de données >tutoriel mysql >`mysql_real_escape_string()` offre-t-il une protection complète contre les injections SQL ?
mysql_real_escape_string() offre-t-il une protection complète contre l'injection SQL ?
Des affirmations récentes circulent en ligne selon lesquelles certains encodages de caractères asiatiques peuvent contourner mysql_real_escape_string(), contournant potentiellement ses mesures de protection contre les attaques par injection SQL. Pour répondre à ces préoccupations, cet article examine la véracité de cette affirmation et explore des stratégies de protection alternatives.
Le contournement de mysql_real_escape_string() est-il possible ?
Stefan Esser, un célèbre expert en sécurité, confirme que l'efficacité de mysql_real_escape_string() peut être compromise lors de l'utilisation de SET NAMES, une commande qui modifie le jeu de caractères actuel. Cela se produit parce que mysql_real_escape_string() ignore le changement de codage. Par conséquent, il ne parvient pas à échapper correctement les caractères lorsqu'ils apparaissent en tant que deuxième, troisième ou octets ultérieurs dans des codages multi-octets. Bien que l'UTF-8 reste insensible à cette vulnérabilité, d'autres codages multi-octets peuvent offrir aux acteurs malveillants un moyen de l'exploiter.
Atténuer les risques
Pour protéger votre site Web contre cette vulnérabilité potentielle, envisagez de mettre en œuvre des mesures de protection alternatives, telles que :
Conclusion
Bien que mysql_real_escape_string() reste un outil utile pour se protéger contre l'injection SQL , il se peut qu'il ne protège pas entièrement contre certains schémas de codage de caractères. La mise en œuvre de mesures de protection supplémentaires, telles que des déclarations préparées, est essentielle pour maintenir l'intégrité de vos applications Web.
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!