Maison  >  Article  >  développement back-end  >  Est-ce que PHP interagit avec MySQL doit être échappé ?

Est-ce que PHP interagit avec MySQL doit être échappé ?

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌original
2023-06-19 09:57:171236parcourir

php mysql interactif doit être échappé, car certains caractères tels que les guillemets simples, les guillemets doubles et les barres obliques inverses ont des significations particulières dans les instructions SQL. Afin d'éviter que ces caractères ne soient mal compris, ils doivent être échappés. , en même temps, il peut éviter les attaques par injection SQL et empêcher les attaquants d'exécuter du code SQL malveillant pour modifier le comportement de l'application, comme la suppression de données, l'obtention d'informations confidentielles, etc.

Est-ce que PHP interagit avec MySQL doit être échappé ?

Le système d'exploitation pour ce tutoriel : système Windows 10, version php8.1.3, ordinateur Dell G3.

Lorsque vous utilisez PHP pour interagir avec MySQL, certains caractères ont une signification particulière dans les instructions SQL. Pour éviter que ces personnages ne soient mal compris, il faut les échapper.

De manière générale, les caractères que nous devons échapper incluent : les guillemets simples ('), les guillemets doubles (") et la barre oblique inverse ().

Par exemple, dans le code PHP, connectez-vous à la base de données MySQL et insérez les données via l'extension MYSQLI :

```php
$name = "John O'Connor";
$age = 25;
mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')");
```

Si la variable $name contient des guillemets simples, cela provoquera une erreur d'exécution d'une instruction SQL. Pour éviter cette situation, vous. peut utiliser. La fonction mysqli_real_escape_string() échappera les données :

```php
$name = "John O'Connor";
$age = 25;
$name = mysqli_real_escape_string($conn, $name);
mysqli_query($conn, "INSERT INTO users(name, age) VALUES('$name', '$age')");
```

Cette fonction échappera automatiquement les caractères spéciaux à leurs équivalents sûrs. Désormais, même si la variable $name contient des guillemets simples, cela ne provoquera pas. Erreur d'exécution de l'instruction SQL.

L'avantage est que les attaques par injection SQL peuvent être évitées L'injection SQL est une vulnérabilité qui exploite les entrées utilisateur qui ne sont pas correctement filtrées ou échappées, ce qui peut permettre à un attaquant d'exécuter du code SQL malveillant pour modifier le comportement de l'application, comme la suppression de données, l'obtention d'informations confidentielles, etc. L'utilisation de l'échappement peut aider à empêcher cette attaque. La méthode d'échappement dépend de l'outil et du langage de programmation utilisés. Dans cette situation, la fonction mysqli_real_escape_string() est fournie ici à titre d'exemple.

<?php
// 建立数据库连接
$conn = mysqli_connect("localhost", "username", "password", "database");
// 检查连接是否成功
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
// 要转义的字符串
$string_to_escape = "It&#39;s a beautiful day!";
// 对字符串进行转义
$escaped_string = mysqli_real_escape_string($conn, $string_to_escape);
// 输出未转义的字符串和转义后的字符串
echo "Original string: " . $string_to_escape . "<br>";
echo "Escaped string: " . $escaped_string;
// 关闭数据库连接
mysqli_close($conn);
?>

Dans l'exemple ci-dessus, nous établissons d'abord une connexion à la base de données MySQL, puis déclarons une chaîne à échapper et à l'échapper. en utilisant la fonction mysqli_real_escape_string(). Enfin, nous sortons la chaîne d'origine et la chaîne échappée, et fermons la connexion à la base de données

Veuillez noter que lors de l'utilisation de la fonction mysqli_real_escape_string(). objet de connexion comme premier paramètre. En effet, la fonction doit savoir quel serveur MySQL est utilisé pour s'échapper correctement.

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