Maison > développement back-end > tutoriel php > addlashes() est-il une défense fiable contre les attaques par injection SQL en PHP ?

addlashes() est-il une défense fiable contre les attaques par injection SQL en PHP ?

Linda Hamilton
Libérer: 2024-12-04 00:27:14
original
396 Les gens l'ont consulté

Is addslashes() a Reliable Defense Against SQL Injection Attacks in PHP?

Comprendre les injections SQL via addlashes()

En PHP, addlashes() est souvent comparé à mysql_real_escape_string comme mesure de sécurité contre les injections SQL. Bien que les deux puissent aider à protéger les données, des exemples démontrent que addlashes() peut permettre des exploitations.

Une méthode d'attaque peut se produire consiste à manipuler addlashes() pour incorporer une barre oblique inverse dans un caractère multi-octets. En conséquence, le rôle protecteur de la barre oblique inverse est neutralisé et une requête malveillante peut être construite.

Par exemple, considérons la requête suivante utilisant addlashes() :

$query = "SELECT * FROM users WHERE name = '" . addslashes($_GET['name']) . "'";
Copier après la connexion

Un attaquant pourrait passer ce qui suit comme paramètre "name":

'John Doe' OR 1 = 1 --
Copier après la connexion

Normalement, le guillemet simple serait échappé par addlashes(). Cependant, dans ce cas, l'attaquant s'appuie sur le caractère multi-octets « Ö ». Lorsque "Ö" est codé en UTF-8, il se compose de trois octets : 0xC3, 0xB6 et 0x9C.

Addslashes() interprète l'entrée de l'attaquant comme :

'John Doe' ÖR 1 \= 1 --
Copier après la connexion

Avec le barre oblique inverse placée dans le caractère multi-octets, addlashes() le traite comme une continuation du caractère plutôt que comme un symbole d'échappement. Par conséquent, la requête SQL n'est pas correctement échappée, ce qui permet à l'attaquant de contourner les mesures de sécurité.

Il est crucial de noter que ce type d'attaque ne s'applique qu'aux encodages de caractères où existent des caractères multi-octets se terminant par 0x5c (le caractère barre oblique inverse ). UTF-8, cependant, n'est pas conforme à cela, réduisant ainsi sa vulnérabilité à ce vecteur d'attaque spécifique.

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!

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