Coupe une chaîne en segments
Explication de la fonction real_escape_string() et mysqli_real_escape_string() en PHP, indispensables pour sécuriser vos applications contre les injections SQL.
PHP Version: 5+
Les fonctions real_escape_string() et mysqli_real_escape_string() sont utilisées en PHP pour échapper les caractères spéciaux dans une chaîne de caractères avant de l'utiliser dans une requête SQL. Cela permet de prévenir les attaques par injection SQL, qui sont une forme de cyberattaque qui consiste à injecter du code malveillant dans une requête SQL.
Les deux fonctions fonctionnent de la même manière, à la seule différence que real_escape_string() est utilisée dans un style procédural, tandis que mysqli_real_escape_string() est utilisée dans un style objet-orienté.
$escaped_string = real_escape_string($string, $link);
Les paramètres sont les suivants :
$mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); $escaped_string = $mysqli->real_escape_string($string);
La fonction real_escape_string() retourne une chaîne de caractères échappée. Les caractères spéciaux échappés sont les suivants :
Caractère | Caractère échappé |
---|---|
' | \' |
" | \" |
\n | \\n |
\r | \\r |
\0 | \\0 |
\x00 à \x1F | \\xHH |
\ | \\ |
Exemple : 📋 Copier le code
<?php $string = "This is a string with a 'quote' and a \"double quote\"."; $escaped_string = real_escape_string($string); echo $escaped_string; // This is a string with a \'quote\' and a \"double quote\"."?>
Exemple : 📋 Copier le code
<?php $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); $string = "This is a string with a 'quote' and a \"double quote\"."; $escaped_string = $mysqli->real_escape_string($string); $query = "INSERT INTO `table` (`string`) VALUES ('$escaped_string')"; $mysqli->query($query);?>
Voici quelques cas d'utilisation pour real_escape_string() et mysqli_real_escape_string(), avec des exemples dans les deux approches :
Dans ce cas, supposons que nous avons un formulaire où l'utilisateur saisie des données
ET nous devons enregistrer les données de l'utilisateur dans une base de données. La fonction real_escape_string() est utilisée pour échapper les caractères spéciaux dans: le nom d'utilisateur, le mot de passe et d'autres informations personnelles de l'utilisateur.
Exemple : 📋 Copier le code
<?php $name = $_POST['name']; $password = $_POST['password']; $escaped_name = real_escape_string($name); $escaped_password = real_escape_string($password); $query = "INSERT INTO `users` (`name`, `password`) VALUES ('$escaped_name', '$escaped_password')"; mysqli_query($link, $query); ?>
Exemple : 📋 Copier le code
<?php $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); $name = $_POST['name']; $password = $_POST['password']; $escaped_name = $mysqli->real_escape_string($name); $escaped_password = $mysqli->real_escape_string($password); $query = "INSERT INTO `users` (`name`, `password`) VALUES ('$escaped_name', '$escaped_password')"; $mysqli->query($query); ?>
Dans ce cas, nous devons rechercher un utilisateur dans la base de données en fonction de son nom d'utilisateur ou de son adresse e-mail. La fonction real_escape_string() est utilisée pour échapper les caractères spéciaux dans le nom d'utilisateur ou l'adresse e-mail de l'utilisateur.
Exemple : 📋 Copier le code
<?php $username = $_POST['username']; $escaped_username = real_escape_string($username); $query = "SELECT * FROM `users` WHERE `username` = '$escaped_username'"; $result = mysqli_query($link, $query); ?>
Exemple : 📋 Copier le code
<?php $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); $username = $_POST['username']; $escaped_username = $mysqli->real_escape_string($username); $query = "SELECT * FROM `users` WHERE `username` = '$escaped_username'"; $result = $mysqli->query($query); ?>
Dans ce cas, nous devons mettre à jour les informations d'un utilisateur dans la base de données. La fonction real_escape_string() est utilisée pour échapper les caractères spéciaux dans les nouvelles informations de l'utilisateur.
Exemple : 📋 Copier le code
<?php $id = $_POST['id']; $name = $_POST['name']; $password = $_POST['password']; $escaped_name = real_escape_string($name); $escaped_password = real_escape_string($password); $query = "UPDATE `users` SET `name` = '$escaped_name', `password` = '$escaped_password' WHERE `id` = '$id'"; mysqli_query($link, $query); ?>
Exemple : 📋 Copier le code
<?php $mysqli = new mysqli('seveur', 'utilisateur, 'motDePasse', 'ma_base_de_données'); $id = $_POST['id']; $name = $_POST['name']; $password = $_POST['password']; $escaped_name = $mysqli->real_escape_string($name); $escaped_password = $mysqli->real_escape_string($password); $query = "UPDATE `users` SET `name` = '$escaped_name', `password` = '$escaped_password' WHERE `id` = '$id'"; $mysqli->query($query); ?>
Ces cas d'utilisation ne sont qu'un exemple des nombreuses façons dont real_escape_string() et mysqli_real_escape_string() peuvent être utilisés pour sécuriser vos applications PHP.
real_escape_string() et mysqli_real_escape_string() sont des fonctions essentielles pour sécuriser vos applications PHP qui utilisent une base de données. En les utilisant correctement, vous pouvez prévenir les attaques par injection SQL et protéger vos données.