Évaluation de l'intégrité de mysql_real_escape_string()
Des inquiétudes ont été soulevées concernant la fiabilité de mysql_real_escape_string() dans la protection des requêtes de base de données contre les attaques par injection SQL . Les critiques font référence à des articles plus anciens suggérant des failles potentielles dans la capacité de la fonction à fournir une protection adéquate.
Documentation MySQL
La documentation de l'API MySQL C pour mysql_real_escape_string() reconnaît cette préoccupation :
If you need to change the character set of the connection, you should use the mysql_set_character_set() function rather than executing a SET NAMES (or SET CHARACTER SET) statement. mysql_set_character_set() works like SET NAMES but also affects the character set used by mysql_real_escape_string(), which SET NAMES does not.
PHP Homologue
En PHP, mysql_set_charset() fonctionne de la même manière que mysql_set_character_set() de MySQL et sert d'homologue PHP.
Proofcode
<?php $str = "'mystring'"; // Set encoding mysql_set_charset('utf8'); // Escape string with correct encoding $escaped_str = mysql_real_escape_string($str);
En utilisant mysql_set_charset() pour modifier l'encodage avant d'utiliser mysql_real_escape_string(), vous vous assurez que le jeu de caractères est correctement défini et que la fonction fonctionne comme prévu. Cela répond aux préoccupations concernant les vulnérabilités potentielles et permet à mysql_real_escape_string() de se protéger efficacement 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!