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
290 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!

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