Maison > base de données > tutoriel mysql > Comment le contournement de l'injection SQL peut-il `mysql_real_escape_string ()`?

Comment le contournement de l'injection SQL peut-il `mysql_real_escape_string ()`?

Susan Sarandon
Libérer: 2025-01-25 21:27:10
original
640 Les gens l'ont consulté

How Can SQL Injection Bypass `mysql_real_escape_string()`?

en utilisant des caractères multi-sections non valides à contourner

Fonction pour l'injection SQL mysql_real_escape_string() Même si la fonction est utilisée, une injection SQL peut se produire. Les étapes suivantes montrent comment contourner cette fonction:

mysql_real_escape_string()

Définissez le jeu de caractères du serveur comme le codage facile à attaquer:
  1. La charge d'attaque contenant un caractère multi-byte non valide:
    <code class="language-sql">mysql_query('SET NAMES gbk');</code>
    Copier après la connexion
  2. en utilisant une charge d'attaque non préparée pour effectuer une requête:

    <code class="language-php">$var = mysql_real_escape_string("\xbf\x27 OR 1=1 /*");</code>
    Copier après la connexion
  3. Le fonctionnement de rotation de la fonction dépend du jeu de caractères utilisé dans actuellement utilisé. Cependant, dans cet exemple, la connexion utilise le jeu de caractères (comme GBK) qui est facile à attaquer, permettant la création de caractères multipliés non valides. Par conséquent, la charge d'injection n'a pas été correctement transférée, ce qui a entraîné des attaques d'injection réussies.

    Mesures de sécurité
    <code class="language-sql">mysql_query("SELECT * FROM test WHERE name = '$var' LIMIT 1");</code>
    Copier après la connexion
Afin de prévenir de telles attaques d'injection, assurez-vous de prendre les mesures suivantes:

mysql_real_escape_string()

Caractères sûrs:

Sélectionnez des ensembles de caractères qui ne sont pas faciles à attaquer, tels que UTF8 ou Latin1. Activer NO_BACKSLASH_ESCAPES MODE SQL:

Cela empêchera les caractères invalides dans le processus de rotation.

Utilisez PDO et désactivez les instructions de pré-procédé de simulation:

    L'APDO fournit de véritables phrases de pré-procédure pour éviter les vulnérabilités d'injection potentielles.
  • La nouvelle version de MySQL (version 5.1 ou supérieure): Ces versions corrigent les vulnérabilités qui permettent l'attaque d'injection mentionnée ci-dessus.

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