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()
La charge d'attaque contenant un caractère multi-byte non valide:
<code class="language-sql">mysql_query('SET NAMES gbk');</code>
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>
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>
mysql_real_escape_string()
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:
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!