Maison  >  Article  >  développement back-end  >  Conseils et astuces pour prévenir les attaques par injection de code en PHP

Conseils et astuces pour prévenir les attaques par injection de code en PHP

王林
王林original
2023-07-09 10:49:061153parcourir

Conseils et astuces pour prévenir les attaques par injection de code en PHP

Dans le développement Web, les attaques par injection de code constituent une vulnérabilité de sécurité courante, en particulier lors du codage en PHP. Les utilisateurs malveillants peuvent contourner la vérification de sécurité d'une application, obtenir des données sensibles ou effectuer des actions malveillantes en injectant du code malveillant. Pour augmenter la sécurité de notre application, nous devons prendre certaines précautions pour empêcher les attaques par injection de code.

Voici quelques suggestions et conseils pour vous aider à prévenir les attaques par injection de code en PHP.

  1. Utilisez des requêtes paramétrées ou des instructions préparées

L'utilisation de requêtes paramétrées ou d'instructions préparées peut empêcher les attaques par injection SQL. Au lieu de fusionner directement les données saisies par l'utilisateur dans des requêtes SQL, utilisez des espaces réservés pour transmettre les données saisies par l'utilisateur au moteur de base de données. L'exemple de code est le suivant :

$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$stmt->bindParam(':username', $user_input);
$stmt->execute();
  1. Filtrer et vérifier les entrées de l'utilisateur

Avant de recevoir les entrées de l'utilisateur, elles doivent être filtrées et vérifiées pour garantir la légalité des données. Par exemple, utilisez la fonction filter_var pour filtrer les adresses e-mail ou les URL saisies par l'utilisateur : filter_var函数来过滤用户输入的电子邮件地址或URL:

$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$url = filter_var($_POST['url'], FILTER_SANITIZE_URL);
  1. 使用白名单

使用白名单可以限制用户的输入只能是预定义的值。这样可以避免用户输入恶意脚本或远程代码执行。示例代码如下:

$allow_list = array('apple', 'banana', 'orange');
if (!in_array($_POST['fruit'], $allow_list)) {
    die('Invalid input');
}
  1. 对用户输入进行转义

在将用户输入用于输出或存储时,要使用适当的转义函数来防止恶意代码的注入。例如,使用htmlspecialchars

echo htmlspecialchars($_POST['message']);

    Utilisez une liste blanche
    1. Utilisez une liste blanche pour limiter la saisie de l'utilisateur à seulement est une valeur prédéfinie. Cela empêche les utilisateurs de saisir des scripts malveillants ou d'exécuter du code à distance. L'exemple de code est le suivant :
    $allowed_types = array('jpg', 'png', 'gif');
    $max_size = 2 * 1024 * 1024; // 2MB
    
    $extension = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));
    if (!in_array($extension, $allowed_types)) {
        die('Invalid file type');
    }
    
    if ($_FILES['file']['size'] > $max_size) {
        die('File is too large');
    }
    
    $filename = uniqid() . '.' . $extension;
    $upload_path = '/path/to/uploads/' . $filename;
    
    if (!move_uploaded_file($_FILES['file']['tmp_name'], $upload_path)) {
        die('File upload failed');
    }

      Échapper à l'entrée utilisateur

      Lorsque vous utilisez l'entrée utilisateur pour la sortie ou le stockage, utilisez les fonctions d'échappement appropriées pour empêcher l'injection de code malveillant. Par exemple, utilisez la fonction htmlspecialchars pour échapper au code HTML des entrées utilisateur : 🎜rrreee🎜🎜Définissez les règles de téléchargement de fichiers appropriées🎜🎜🎜Lors du traitement des téléchargements de fichiers, définissez les règles de téléchargement de fichiers appropriées. Accepte uniquement les types de fichiers spécifiés et limite la taille du fichier. Utilisez également les fonctions de gestion des noms de fichiers et des chemins sécurisés avant d’enregistrer les fichiers téléchargés. L'exemple de code est le suivant : 🎜rrreee🎜Pour résumer, en adoptant les suggestions et techniques ci-dessus, nous pouvons empêcher efficacement les attaques par injection de code en PHP. Mais veuillez noter que la sécurité est un processus continu qui nécessite des mises à jour et une maintenance régulières pour s'adapter à l'évolution des menaces de sécurité. Dans le même temps, il est également important de comprendre les dernières vulnérabilités de sécurité et techniques d’attaque, de rester vigilant et de prendre des mesures en temps opportun pour protéger la sécurité des applications. 🎜

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