Maison >développement back-end >tutoriel php >`mysql_real_escape_string()` est-il vraiment sûr : les encodages de caractères asiatiques peuvent-ils contourner sa protection ?

`mysql_real_escape_string()` est-il vraiment sûr : les encodages de caractères asiatiques peuvent-ils contourner sa protection ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 18:17:02929parcourir

Is `mysql_real_escape_string()` Truly Safe: Can Asian Character Encodings Bypass its Protection?

Mysql_real_escape_string() protège-t-il entièrement contre l'injection SQL ?

Une affirmation récente a circulé selon laquelle mysql_real_escape_string() peut être contourné avec certains encodages de caractères asiatiques , en particulier Big5 et GBK. Cette affirmation est-elle valable, et si c'est le cas, comment pouvez-vous protéger votre site Web sans recourir à des déclarations préparées ?

La vulnérabilité

Selon Stefan Esser, mysql_real_escape_string() présente une vulnérabilité lorsque la commande SET NAMES est utilisée. Cette commande modifie le codage des caractères, rendant mysql_real_escape_string() inconscient de certains codages multi-octets qui utilisent des barres obliques inverses comme octets supplémentaires. Cet échappement incorrect peut compromettre la sécurité de votre site Web.

Garanties

Bien que l'encodage UTF-8 ne soit pas sensible à cet exploit, il est essentiel d'utiliser mysql_set_charset pour modifier les encodages en toute sécurité. . Cette fonction n'est cependant disponible que dans les versions PHP les plus récentes. Si vous ne pouvez pas utiliser d'instructions préparées ou mysql_set_charset, vous devrez peut-être explorer des méthodes alternatives pour protéger votre site Web contre les attaques par injection SQL.

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