Maison  >  Article  >  développement back-end  >  Des moyens efficaces pour prévenir les attaques par injection PHP

Des moyens efficaces pour prévenir les attaques par injection PHP

WBOY
WBOYoriginal
2024-05-01 17:48:021117parcourir

Les méthodes pour empêcher les attaques par injection PHP incluent : Utiliser des requêtes paramétrées pour empêcher l'injection SQL. Utilisez la fonction d'entrée de filtre pour filtrer les valeurs transmises. Utilisez la fonction mysqli_real_escape_string() pour échapper aux caractères spéciaux. Utilisez la validation de liste blanche et de liste noire pour filtrer les caractères ou modèles dangereux.

预防 PHP 注入攻击的有效方法

Un moyen efficace de prévenir les attaques par injection PHP

L'attaque par injection PHP est un type d'attaque qui exploite les vulnérabilités des applications PHP pour insérer des requêtes SQL malveillantes. De telles attaques peuvent entraîner des fuites de données, une corruption de bases de données ou même une prise de contrôle du système.

Méthodes de prévention

1. Requêtes paramétrées

L'utilisation de requêtes paramétrées peut empêcher les attaques par injection SQL. Cette technique utilise des espaces réservés (?) pour remplacer les valeurs réelles dans les requêtes SQL et transmet les valeurs à MySQL avant d'exécuter la requête.

Exemple de code :

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);

2. Utilisez la fonction de filtre

pour filtrer l'entrée afin d'éviter les attaques par injection. Les valeurs entrantes peuvent être filtrées à l'aide de la fonction filter_input() de PHP. filter_input() 函数过滤传入的值。

示例代码:

$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

3. 转义特殊字符

可以使用 mysqli_real_escape_string()

Exemple de code :

$username = mysqli_real_escape_string($conn, $username);

3. Échapper aux caractères spéciaux

Vous pouvez utiliser la fonction mysqli_real_escape_string() pour échapper aux caractères spéciaux d'entrée afin d'éviter qu'ils ne soient interprétés comme des commandes SQL.

Exemple de code :

// 白名单
$allowed_chars = ['a', 'b', 'c'];
if (!in_array($char, $allowed_chars)) {
  // 输出错误消息
}

// 黑名单
$banned_chars = ['<', '>', '"', '\''];
if (preg_match('/[' . implode('', $banned_chars) . ']/', $input)) {
  // 输出错误消息
}

4. Utilisez la vérification de la liste blanche et de la liste noire

La vérification de la liste blanche et de la liste noire peut filtrer les caractères ou les modèles dangereux.

Exemple de code :

// 获取用户输入
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

// 准备和执行查询
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();

Un exemple pratique

🎜🎜Voici un exemple de code montrant comment utiliser des requêtes paramétrées et des fonctions de filtrage pour empêcher les attaques par injection : 🎜rrreee🎜🎜Conclusion🎜🎜🎜En mettant en œuvre ces précautions, vous peut protéger vos applications PHP contre les attaques par injection. 🎜

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