Maison > développement back-end > tutoriel php > « addslashes() » offre-t-il une protection suffisante contre les attaques par injection SQL ?

« addslashes() » offre-t-il une protection suffisante contre les attaques par injection SQL ?

Linda Hamilton
Libérer: 2024-12-03 02:30:10
original
452 Les gens l'ont consulté

Does `addslashes()` Offer Sufficient Protection Against SQL Injection Attacks?

Comprendre les risques d'injection SQL via addlashes()

Dans le domaine de la programmation PHP, la protection contre les injections SQL est un aspect crucial de la sécurité des données . Bien que mysql_real_escape soit reconnu comme une défense fiable, la mesure dans laquelle addlashes() présente un risque pour les injections SQL peut parfois rester floue. Cet article vise à clarifier cela en découvrant des exemples de la manière dont addlashes() peut contribuer à de telles attaques.

Le nœud du dilemme réside dans la possibilité pour addlashes() d'insérer une barre oblique inverse dans des caractères multi-octets. Cela peut perturber la séquence d'échappement prévue, permettant à des caractères malveillants de pénétrer et de manipuler les requêtes de base de données.

Pour illustrer, considérons la charge utile suivante :

username = 'lilac\';-- 
Copier après la connexion

Si elle est soumise à des addlashes() :

username = addslashes('lilac\';--');
Copier après la connexion

Le résultat :

username = 'lilac\'\;--'
Copier après la connexion

Dans ce scénario, la séquence d'évasion prévue est contrecarrée, laissant 'lilac';-- en tant que chaîne valide avec un commentaire de ligne intégré. Ce commentaire pourrait être exploité pour contourner la validation et manipuler la requête.

Il est important de noter que cette attaque repose sur des encodages de caractères spécifiques, en particulier ceux avec des caractères multi-octets se terminant par 0x5c (barre oblique inverse). UTF-8, cependant, est exempté de cette vulnérabilité car ses caractères multi-octets autorisés ne sont pas conformes à ce modèle.

Par conséquent, même si addlashes() peut jouer un rôle dans l'assainissement de base des chaînes, il ne faut pas s'y fier uniquement pour empêcher les injections SQL. L'approche la plus sûre reste mysql_real_escape, qui gère efficacement les caractères multi-octets et offre une protection plus robuste contre de telles attaques.

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