Maison >base de données >tutoriel mysql >Addslashes() en PHP est-il vraiment sûr contre l'injection SQL, en particulier avec les caractères multi-octets ?

Addslashes() en PHP est-il vraiment sûr contre l'injection SQL, en particulier avec les caractères multi-octets ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-15 19:26:44439parcourir

Is addslashes() in PHP Truly Safe Against SQL Injection, Especially with Multibyte Characters?

PHP addslashes() et injection SQL : une analyse de vulnérabilité des caractères multi-octets

Bien que mysql_real_escape_string soit la méthode privilégiée pour sécuriser la saisie des utilisateurs dans les requêtes PHP SQL, il est essentiel de comprendre les limites de addslashes(). Cette fonction, dans des conditions spécifiques, peut rendre votre application vulnérable aux attaques par injection SQL.

La addslashes() Faiblesse

La principale faiblesse de addslashes() vient de sa gestion inadéquate des caractères multi-octets. Lorsqu'un guillemet simple ou double réside dans une séquence de caractères multi-octets, addslashes() fait précéder le guillemet d'une barre oblique inverse. Cependant, si cette barre oblique inverse est intégrée dans un caractère multi-octets valide, sa fonction d'échappement est compromise.

Cela permet à un attaquant de construire une entrée malveillante contenant un caractère multi-octets incorporant une barre oblique inverse suivie d'un guillemet. Cela contourne intelligemment le mécanisme d'échappement prévu, permettant à la citation de fonctionner comme point d'initiation d'une commande d'injection SQL.

Stratégies d'atténuation efficaces

Pour éviter efficacement cette vulnérabilité, évitez complètement d'utiliser addslashes() pour nettoyer les entrées utilisateur destinées aux requêtes SQL. Au lieu de cela, utilisez systématiquement mysql_real_escape_string (ou ses équivalents d'instructions préparées pour une sécurité encore meilleure), qui est spécialement conçu pour gérer les caractères multi-octets et neutraliser efficacement les menaces d'injection SQL.

Clé à retenir

addslashes() est une fonction obsolète pour la désinfection des entrées. Reconnaître ses vulnérabilités est essentiel pour créer des applications PHP sécurisées. En adoptant des alternatives plus sûres telles que mysql_real_escape_string et, idéalement, des instructions préparées, les développeurs peuvent réduire considérablement le risque d'attaques par injection SQL réussies.

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:
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