real_escape_string
Dans cet article, nous examinerons la fonction mysqli_real_escape_string() en PHP, qui sert à échapper les caractères spéciaux dans les chaînes destinées aux requêtes SQL.
Introduction à la fonction mysqli_real_escape_string()
Cette fonction native de PHP échappe les caractères spéciaux dans les chaînes prévues pour des requêtes SQL. Elle permet de prévenir les attaques par injection SQL, qui surviennent lorsque des utilisateurs malveillants injectent du code SQL nuisible dans les instructions exécutées par la base de données.
Comment utiliser la fonction mysqli_real_escape_string()
L'utilisation de la fonction mysqli_real_escape_string() est simple. Voici un exemple :
<?php
$con = mysqli_connect('localhost', 'username', 'password', 'database');
if (!$con) {
exit('Could not connect: ' . mysqli_error($con));
}
// Set charset to prevent multi-byte character vulnerabilities
mysqli_set_charset($con, 'utf8mb4');
$name = "John O'Reilly";
$name = mysqli_real_escape_string($con, $name);
$sql = "INSERT INTO customers (name) VALUES ('$name')";
if (!mysqli_query($con, $sql)) {
exit('Error: ' . mysqli_error($con));
}
echo '1 record added';
mysqli_close($con);
?>Dans cet exemple, nous établissons d'abord une connexion à une base de données MySQL via mysqli_connect(). Nous définissons ensuite une variable $name contenant une apostrophe. L'appel à mysqli_real_escape_string() échappe cette apostrophe, garantissant que l'instruction SQL s'exécute sans erreur de syntaxe. Nous construisons une requête INSERT sur la table customers, l'exécutons avec mysqli_query(), puis affichons un message de succès.
Remarque : Définissez toujours le jeu de caractères de la connexion (par ex. mysqli_set_charset($con, 'utf8mb4')) avant d'échapper les caractères pour éviter les vulnérabilités liées aux caractères multi-octets. Bien que cette fonction soit fonctionnelle, le développement PHP moderne recommande fortement l'utilisation de requêtes préparées avec paramètres pour une sécurité optimale.
Conclusion
La fonction mysqli_real_escape_string() reste un outil pratique pour échapper les caractères spéciaux dans les requêtes SQL. Une échappement correct des entrées utilisateur contribue à sécuriser votre application et à protéger vos données.
Pratique
Que fait la fonction PHP mysql_real_escape_string ?