Maison  >  Article  >  développement back-end  >  Filtrage des données PHP : empêcher l'exécution de fichiers malveillants

Filtrage des données PHP : empêcher l'exécution de fichiers malveillants

WBOY
WBOYoriginal
2023-07-28 10:53:231423parcourir

Filtrage des données PHP : Prévenir l'exécution de fichiers malveillants

Introduction :
Dans le développement Web, la manière de filtrer efficacement les données saisies par l'utilisateur est très importante. En particulier pour la fonction de téléchargement de fichiers, nous devons prendre des mesures de filtrage strictes pour empêcher l'exécution de fichiers malveillants. Cet article explique comment utiliser PHP pour le filtrage des données et comment empêcher l'exécution de fichiers malveillants. Parallèlement, quelques exemples de code PHP seront donnés à titre de référence.

1. Filtrer les données d'entrée utilisateur

  1. Filtrer les chaînes d'entrée utilisateur
    Lors du traitement des données d'entrée utilisateur, nous devons filtrer les caractères spéciaux pour empêcher les attaques XSS. Vous pouvez utiliser la fonction htmlspecialchars() fournie par PHP pour filtrer les entrées de l'utilisateur.

Voici l'exemple de code :

$input = $_POST['input'];
$filteredInput = htmlspecialchars($input);
  1. Filtrer les entiers saisis par l'utilisateur
    Lors du traitement des données entières saisies par l'utilisateur, nous devons nous assurer qu'elles ne contiennent que des nombres. Vous pouvez utiliser la fonction filter_var() fournie par PHP pour filtrer les entiers.

Ce qui suit est un exemple de code :

$input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_VALIDATE_INT);
  1. Filtrer les nombres à virgule flottante saisis par l'utilisateur
    Lors du traitement des données à virgule flottante saisies par l'utilisateur, nous devons nous assurer qu'elles ne contiennent que des nombres et des points décimaux. Vous pouvez utiliser la fonction filter_var() fournie par PHP pour filtrer les nombres à virgule flottante.

Ce qui suit est un exemple de code :

$input = $_POST['input'];
$filteredInput = filter_var($input, FILTER_VALIDATE_FLOAT);

2. Empêchez l'exécution de fichiers malveillants

  1. Vérification du type de fichier
    Dans la fonction de téléchargement de fichiers, assurez-vous que seuls les types de fichiers sûrs peuvent être téléchargés. Vous pouvez utiliser le tableau $_FILES fourni par PHP pour obtenir des informations sur le fichier téléchargé et utiliser la fonction pathinfo() pour obtenir l'extension du fichier. Ensuite, un jugement est effectué sur le backend pour accepter uniquement les types de fichiers autorisés.

Ce qui suit est un exemple de code :

$allowedTypes = array('jpg', 'png', 'gif');
$uploadedFile = $_FILES['file'];
$fileName = $uploadedFile['name'];
$fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);

if (in_array($fileExtension, $allowedTypes)) {
    // 允许文件上传
    move_uploaded_file($uploadedFile['tmp_name'], 'uploads/' . $fileName);
} else {
    // 文件类型不允许上传
    echo "文件类型不支持上传";
}
  1. Vérification du chemin du fichier
    Lors du traitement des fichiers téléchargés, nous devons également vérifier le chemin du fichier pour nous assurer qu'aucun code malveillant n'est exécuté. Vous pouvez utiliser la fonction realpath() fournie par PHP pour obtenir le chemin réel du fichier et vérifier si le chemin se trouve dans le répertoire spécifié.

Voici l'exemple de code :

$allowedPath = '/uploads';
$uploadedFile = $_FILES['file'];
$filePath = realpath($uploadedFile['tmp_name']);

if (strpos($filePath, $allowedPath) === 0) {
    // 文件路径在允许的目录内
    move_uploaded_file($uploadedFile['tmp_name'], 'uploads/' . $fileName);
} else {
    // 文件路径不在允许的目录内
    echo "非法文件路径";
}
  1. Vérification du contenu du fichier
    En plus de la vérification du chemin et du type de fichier, le contenu du fichier doit également être vérifié pour garantir qu'aucun code malveillant n'est exécuté. Vous pouvez utiliser la fonction getimagesize() fournie par PHP pour vérifier le fichier image afin de vous assurer qu'il s'agit d'un véritable fichier image.

Ce qui suit est un exemple de code :

$uploadedFile = $_FILES['file'];
$fileType = exif_imagetype($uploadedFile['tmp_name']);

if ($fileType !== false) {
    // 是图像文件
    move_uploaded_file($uploadedFile['tmp_name'], 'uploads/' . $fileName);
} else {
    // 不是图像文件
    echo "非法文件内容";
}

Conclusion :
Dans le développement Web, le filtrage des données saisies par l'utilisateur est très important, en particulier pour les fonctions de téléchargement de fichiers. Grâce à un filtrage raisonnable des données et à un traitement des fichiers, nous pouvons empêcher efficacement l’exécution de fichiers malveillants. Cet article donne quelques exemples de code PHP, j'espère qu'il sera utile aux lecteurs.

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