Explication détaillée des vulnérabilités d'inclusion de fichiers PHP et méthodes de prévention
Dans les applications WEB, la fonction d'inclusion de fichiers est une fonction très courante. Cependant, des vulnérabilités d'inclusion de fichiers peuvent survenir si les paramètres saisis par l'utilisateur ne sont pas traités avec soin. Cette vulnérabilité pourrait permettre à un attaquant de télécharger du code PHP et de l'inclure dans l'application, prenant ainsi le contrôle du serveur. Par conséquent, il est très nécessaire d’avoir une compréhension approfondie des causes et des méthodes de prévention des vulnérabilités d’inclusion de fichiers PHP.
Causes des vulnérabilités d'inclusion de fichiers PHP
L'apparition de vulnérabilités d'inclusion de fichiers PHP est généralement liée aux deux raisons suivantes :
1. correct Filtrer les données d'entrée utilisateur
En PHP, vous pouvez inclure un fichier PHP dans un autre fichier PHP via include, require et d'autres fonctions. Si les données soumises par l'utilisateur sont utilisées comme chemin de fichier dans ces fonctions, l'attaquant peut facilement créer un script PHP contenant du code malveillant et le télécharger sur le serveur. Par exemple :
<?php $page=$_GET['page']; include($page); ?>
Dans cet exemple, l'attaquant peut définir le paramètre de page sur http://example.com/shell.php pour inclure le fichier shell.php dans l'application.
2. La légalité des données saisies par l'utilisateur n'est pas vérifiée
Même si les données saisies par l'utilisateur sont filtrées, les attaquants peuvent toujours utiliser d'autres méthodes pour atteindre les vulnérabilités d'inclusion de fichiers. Par exemple, utilisez des chemins relatifs tels que ../ pour accéder, ou utilisez %00, etc. pour contourner le caractère de fin nul. Par exemple :
<?php $page=$_GET['page']; include('pages/'.$page); ?>
Dans cet exemple, l'attaquant peut définir le paramètre de page sur ../shell.php, contournant ainsi les restrictions de fichiers dans le répertoire des pages et accédant aux fichiers du répertoire supérieur. Fichier .php.
Comment prévenir les vulnérabilités d'inclusion de fichiers PHP
Afin de prévenir efficacement les vulnérabilités d'inclusion de fichiers PHP, vous devez faire attention aux points suivants :
#🎜🎜 #1. Essayez autant que possible d'utiliser des chemins absolusL'utilisation de chemins absolus peut empêcher efficacement les attaquants de contourner les restrictions en utilisant des chemins relatifs tels que ../. Par exemple, vous pouvez utiliser $_SERVER['DOCUMENT_ROOT'] pour obtenir le répertoire racine du site Web, puis utiliser les fonctions include, require et autres en combinaison avec le chemin de fichier spécifique. Par exemple :<?php $page=$_GET['page']; include($_SERVER['DOCUMENT_ROOT'].'/pages/'.$page); ?>
<?php $page=$_GET['page']; $whitelist=array('home','about','contact'); if(in_array($page,$whitelist)){ include("pages/".$page.".php"); }else{ echo "Invalid page requested"; } ?>
<?php $page=$_GET['page']; $file="pages/".$page; if(file_exists($file)){ include($file); }else{ echo "Invalid page requested"; } ?>
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!