Évaluation de la sécurité de mysql_real_escape_string() contre l'injection SQL avec des codages asiatiques
Question :
Une vulnérabilité de sécurité a été signalée affirmant que mysql_real_escape_string() peut être contournée en utilisant codages de caractères asiatiques spécifiques, tels que BIG5 ou GBK. Cette vulnérabilité est-elle valide, et si oui, comment pouvons-nous l'atténuer sans utiliser d'instructions préparées ?
Réponse :
Selon Stefan Esser, développeur PHP, mysql_real_escape_string( ) n'est pas totalement sécurisé contre l'injection SQL lorsque certains paramètres d'encodage sont utilisé.
Explication :
Le problème survient lorsque la commande SET NAMES est utilisée pour modifier le codage des caractères de la base de données. Ce changement de codage affecte la façon dont les caractères spéciaux, tels que les barres obliques inverses (), sont échappés. Mysql_real_escape_string() suppose un codage par défaut et n'ajuste pas sa logique d'échappement en conséquence.
Par conséquent, si un attaquant utilise un codage qui autorise les barres obliques inverses dans les octets suivants, mysql_real_escape_string() peut ne pas échapper correctement à ces caractères. Cela pourrait conduire à une attaque par injection SQL réussie.
Atténuation :
Pour résoudre cette vulnérabilité lorsque les instructions préparées ne sont pas disponibles :
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!