Maison >développement back-end >tutoriel php >Guide de sécurité PHP : Prévenir les vulnérabilités liées au cheminement et au téléchargement arbitraire de fichiers
Guide de sécurité PHP : Prévenir les vulnérabilités de traversée de chemin et de téléchargement de fichiers arbitraires
Introduction :
Avec le développement rapide d'Internet, PHP, en tant que langage de développement Web très populaire, a été Il est largement utilisé dans le développement de divers sites Web et applications. Cependant, en raison de la flexibilité et de l’ouverture de PHP, il donne également aux pirates la possibilité d’exploiter des vulnérabilités. Cet article se concentrera sur deux vulnérabilités de sécurité courantes, à savoir la vulnérabilité de traversée de chemin et la vulnérabilité de téléchargement de fichiers arbitraires, et fournira les mesures préventives correspondantes.
1. Vulnérabilité de traversée de chemin
La vulnérabilité de traversée de chemin signifie que l'attaquant modifie les paramètres d'URL pour sortir de la plage de chemin spécifiée et accéder aux fichiers sensibles du système. Voici un exemple de code courant :
$file = $_GET['file']; include '/path/to/files/' . $file;
Un attaquant peut transmettre le paramètre de fichier sous la forme "../config.php" pour accéder à des fichiers sensibles tels que /config.php. Afin d'éviter les vulnérabilités de traversée de chemin, nous devons prendre les mesures suivantes :
$file = $_GET['file']; if (!preg_match('/^[a-zA-Z0-9]{1,20}.(jpg|png|gif)$/', $file)) { die('Invalid file name'); }
$file = $_GET['file']; $basePath = '/path/to/files/'; $fullPath = realpath($basePath . $file); if ($fullPath === false || strncmp($fullPath, $basePath, strlen($basePath)) !== 0) { die('Invalid file path'); }
2. Vulnérabilité de téléchargement de fichiers arbitraire
La vulnérabilité de téléchargement de fichiers arbitraire signifie que l'attaquant utilise la fonction de téléchargement pour télécharger des fichiers malveillants sur le serveur et exécuter le code malveillant, ainsi Prenez le contrôle du serveur ou obtenez des informations sensibles. Voici quelques mesures pour éviter les vulnérabilités de téléchargement arbitraire de fichiers :
$fileType = $_FILES['file']['type']; $allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; if (!in_array($fileType, $allowedTypes)) { die('Invalid file type'); }
$fileName = $_FILES['file']['name']; $allowedExtensions = ['jpg', 'png', 'gif']; $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION); if (!in_array($fileExtension, $allowedExtensions)) { die('Invalid file extension'); }
$filePath = $_FILES['file']['tmp_name']; $fileContent = file_get_contents($filePath); if (strpos($fileContent, 'malicious code') !== false) { die('Invalid file content'); }
Conclusion :
Les vulnérabilités de traversée de chemin et les vulnérabilités de téléchargement de fichiers arbitraires sont des problèmes de sécurité qui surviennent facilement dans le processus de développement PHP. Ces vulnérabilités peuvent être évitées efficacement grâce à un filtrage et une validation stricts des entrées utilisateur, ainsi qu'à des vérifications des types de fichiers, des extensions et du contenu des fichiers. Dans le même temps, prêter une attention particulière aux annonces officielles de sécurité de PHP et aux derniers correctifs de sécurité, et mettre à jour la version de PHP en temps opportun sont également des mesures importantes pour protéger la sécurité du système.
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!