Maison > base de données > tutoriel mysql > le corps du texte

mysql_real_escape_string() est-il vulnérable à l'injection SQL avec des encodages asiatiques ?

Mary-Kate Olsen
Libérer: 2024-11-27 22:54:10
original
714 Les gens l'ont consulté

Is mysql_real_escape_string() Vulnerable to SQL Injection with Asian Encodings?

É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 :

  1. Utilisez la fonction mysql_set_charset() pour définir explicitement le codage des caractères de la base de données au lieu de s'appuyer sur SET NAMES. Cela garantit que mysql_real_escape_string() fonctionne avec les informations de codage correctes.
  2. Passez à un codage sûr, tel que UTF-8, qui gère les barres obliques inverses de manière à empêcher leur utilisation abusive dans les injections 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal