Maison  >  Article  >  développement back-end  >  Utilisez la fonction PHP "mysqli_real_escape_string" pour échapper aux caractères spéciaux dans les chaînes afin d'éviter l'injection SQL

Utilisez la fonction PHP "mysqli_real_escape_string" pour échapper aux caractères spéciaux dans les chaînes afin d'éviter l'injection SQL

WBOY
WBOYoriginal
2023-07-25 09:41:111212parcourir

Utilisez la fonction PHP "mysqli_real_escape_string" pour échapper les caractères spéciaux dans la chaîne afin d'éviter l'injection SQL

Introduction : Lors du développement de sites Web qui interagissent avec des bases de données, nous devons souvent stocker les données saisies par l'utilisateur dans la base de données. Cependant, si les données saisies par l'utilisateur ne sont pas traitées, un utilisateur malveillant peut utiliser les données saisies pour mener des attaques par injection SQL, causant ainsi de graves dommages à la base de données. Afin d'éviter cette situation, nous pouvons utiliser la fonction PHP "mysqli_real_escape_string" pour échapper aux données saisies par l'utilisateur afin de garantir que la chaîne saisie ne sera pas interprétée à tort comme du code SQL.

Injection SQL : l'injection SQL est un type d'attaque qui exploite de manière malveillante les vulnérabilités des applications Web. Les attaquants modifient ou volent les informations de la base de données en insérant du code SQL dans les données d'entrée. Il s'agit d'une méthode d'attaque courante qui peut entraîner une fuite de données, une corruption de base de données ou même compromettre directement l'ensemble de l'application.

Solution : Pour empêcher les attaques par injection SQL, nous pouvons utiliser la fonction "mysqli_real_escape_string" en PHP pour échapper aux données saisies par l'utilisateur. Cette fonction gère les caractères spéciaux dans les données pour garantir qu'ils ne sont pas confondus avec des codes SQL, mais uniquement traités comme des chaînes ordinaires.

Exemple de code :

<?php
// 连接到数据库
$mysqli = new mysqli("localhost", "root", "", "mydatabase");

// 检查连接是否成功
if ($mysqli->connect_errno) {
    echo "连接失败:" . $mysqli->connect_error;
    exit();
}

// 获取用户输入
$username = $_POST['username'];
$password = $_POST['password'];

// 对用户输入进行转义
$username = mysqli_real_escape_string($mysqli, $username);
$password = mysqli_real_escape_string($mysqli, $password);

// 构建SQL查询语句
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";

// 执行查询
$result = $mysqli->query($query);

// 检查查询结果
if ($result->num_rows > 0) {
    // 登录成功
    echo "登录成功!";
} else {
    // 登录失败
    echo "用户名或密码不正确!";
}

// 关闭数据库连接
$mysqli->close();
?>

Dans le code ci-dessus, nous créons d'abord une connexion à la base de données et vérifions si la connexion réussit. Nous prenons ensuite le nom d'utilisateur et le mot de passe saisis par l'utilisateur et les évitons à l'aide de la fonction "mysqli_real_escape_string". Ensuite, nous construisons une instruction de requête SQL et exécutons la requête. Enfin, nous vérifions les résultats de la requête, et s'il existe un utilisateur correspondant, la connexion est considérée comme réussie, sinon la connexion est considérée comme un échec.

Résumé : Pour éviter les attaques par injection SQL, nous devons toujours échapper aux données saisies par l'utilisateur. PHP fournit la fonction "mysqli_real_escape_string" pour nous aider à accomplir cette tâche. En utilisant cette fonction, nous pouvons garantir que les données saisies par l'utilisateur ne seront pas interprétées à tort comme du code SQL, protégeant ainsi efficacement la sécurité de la base de données. Il est fortement recommandé d'utiliser cette fonction dans le développement de sites Web qui interagissent avec la base de données afin de réduire les risques potentiels de sécurité.

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