L'encodage a-t-il un impact sur l'efficacité de mysql_real_escape_string() contre l'injection SQL ?
Une prétendue vulnérabilité prétend que la fonction mysql_real_escape_string() peut être contournée en utilisant certains codages de caractères asiatiques, tels que BIG5 ou GBK. Cela soulève des inquiétudes quant à l'efficacité de cette fonction en tant que défense complète contre les attaques par injection SQL.
Impact de l'encodage sur la sécurité
Selon la déclaration de l'expert en sécurité Stefan Esser , mysql_real_escape_string() est compromis lorsqu'il est utilisé conjointement avec la commande SET NAMES. En effet, SET NAMES permet des changements d'encodage dynamiques, qui contournent les capacités de détection et d'échappement de mysql_real_escape_string(). Lors du codage des transitions vers des formats multi-octets autorisant les caractères barre oblique inverse en tant qu'octets non initiaux, mysql_real_escape_string() ne parvient pas à s'échapper correctement, exposant des vulnérabilités aux attaques par injection.
Implications pour la protection des sites Web
Si une application s'appuie uniquement sur mysql_real_escape_string() pour la protection contre les injections SQL et qu'elle utilise SET NAMES pour modifier l'encodage, le site Web reste vulnérable aux attaques.
Stratégies d'atténuation
Pour atténuer cette vulnérabilité, il est essentiel d'éviter d'utiliser SET NAMES en conjonction avec mysql_real_escape_string(). Au lieu de cela, la fonction mysql_set_charset(), plus sûre, doit être utilisée pour coder les modifications. Cependant, il convient de noter que cette option n'est disponible que dans les versions ultérieures de PHP.
Précautions supplémentaires
Bien que UTF-8 soit considéré comme sûr pour une utilisation avec mysql_real_escape_string( ), il est toujours recommandé de mettre en œuvre des mesures de sécurité supplémentaires, telles que l'utilisation d'instructions préparées ou de techniques de validation des entrées, pour améliorer encore la protection contre les attaques par injection SQL.
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!