Alors que les menaces de sécurité du réseau continuent de s'intensifier, les vulnérabilités d'inclusion de fichiers à distance PHP sont devenues un défi majeur pour les développeurs. Les pirates peuvent utiliser cette vulnérabilité pour effectuer des opérations malveillantes, mettant en danger la sécurité du site Web. Cet article introduira en détail comment réparer efficacement les vulnérabilités d'inclusion des fichiers distants PHP pour empêcher de telles attaques.
Les fichiers distants PHP contiennent des vulnérabilités qui apparaissent généralement dans les pages Web dynamiques. Lorsque les fonctions contenant des fichiers de PHP (telles que l'inclusion ou l'exigence ) ne vérifient pas et ne filtrent pas entièrement les entrées utilisateur, les pirates peuvent exécuter du code malveillant en modifiant l'URL pour inclure des fichiers distants malveillants, attaquant ainsi le site Web.
Le correctif le plus simple et le plus efficace consiste à désactiver l'inclusion des fichiers distants. Définissez simplement allow_url_include à 0 dans le fichier de configuration PHP ( PHP.ini ) pour empêcher PHP de analyser les fichiers distants.
Exemple de code:
<?php
ini_set("allow_url_include", "0");
// code goes here
?>
Avant d'inclure des fichiers, il est crucial de filtrer strictement et de vérifier les entrées utilisateur. Vous pouvez utiliser la fonction filter_var pour vérifier l'URL entrée par l'utilisateur pour s'assurer qu'il s'agit d'un chemin local légal. L'inclusion des fichiers n'est autorisée que si l'URL répond aux exigences.
Exemple de code:
<?php
$url = $_GET['file'];
$allowed_extensions = array("php", "html", "txt");
<p>// examinerURLEst-ce un chemin de fichier local?<br>
if (filter_var($url, FILTER_VALIDATE_URL) === false || !in_array(pathinfo($url, PATHINFO_EXTENSION), $allowed_extensions)) {<br>
echo "Invalid file URL";<br>
exit;<br>
}</p>
<p>// Contient des fichiers locaux<br>
include $url;<br>
?><br>
En utilisant des listes blanches, seuls les fichiers spécifiés sont autorisés à être inclus, la survenue de vulnérabilités d'inclusion de fichiers distantes peut être effectivement évitée. Même si un pirate injecte avec succès des chemins de fichiers malveillants, il est impossible d'attaquer de cette façon.
Exemple de code:
<?php
$file = $_GET['file'];
$allowed_files = array("header.php", "footer.php", "config.php");
<p>// examiner文件是否在白名单中<br>
if (!in_array($file, $allowed_files)) {<br>
echo "Invalid file";<br>
exit;<br>
}</p>
<p>// Inclure les fichiers<br>
include $file;<br>
?><br>
Pour éviter d'inclure des fichiers involontaires, il est préférable d'utiliser des chemins absolus au lieu de chemins relatifs. Cela garantit que seuls les fichiers dans le répertoire spécifié sont inclus, réduisant les risques de sécurité potentiels.
Exemple de code:
<?php
$file = $_GET['file'];
$base_path = "/var/www/html/includes/";
<p>// Eplice un chemin absolu<br>
$file_path = $base_path . $file;</p>
<p>// Fichier contenant des chemins absolus<br>
include $file_path;<br>
?><br>
Ce qui précède est plusieurs méthodes courantes pour fixer les vulnérabilités dans les fichiers distants PHP. En interdisant aux fichiers distants d'inclure, de filtrer l'entrée utilisateur, de restrictions en liste blanche et d'utiliser des chemins absolus, le risque d'exécution du code distant peut être considérablement réduit. De plus, les développeurs doivent mettre à jour la version PHP en temps opportun, suivre les meilleures pratiques de codage sécurisé et améliorer en permanence la sécurité du site Web.