Position actuelle: Accueil> Derniers articles> Highlight_file Meilleure façon d'utiliser la fonction avec le chemin du chemin de fichier Vérification

Highlight_file Meilleure façon d'utiliser la fonction avec le chemin du chemin de fichier Vérification

gitbox 2025-06-03

Pendant le développement de PHP, la fonction highlight_file est un outil très pratique. Il peut sortir des fichiers PHP spécifiés dans un format de surbrillance, ce qui facilite les développeurs pour afficher rapidement la structure et la syntaxe du code. Cependant, lors de l'utilisation de Highlight_file pour afficher directement le contenu des fichiers, si la vérification de sécurité du chemin du fichier n'est pas bien effectuée, elle peut provoquer des risques de sécurité, tels que les attaques de traversée de chemin ou l'exposition des contenus de fichiers sensibles.

Cet article combinera des exemples de code réels pour introduire comment utiliser la fonction Highlight_File en toute sécurité et efficacement pour assurer la mise en évidence des fichiers PHP.


1. Introduction à la fonction highlight_file

Highlight_file est une fonction PHP intégrée qui lit un fichier PHP spécifié et le sort au format HTML avec la mise en surbrillance de la syntaxe. Le format d'appel est le suivant:

 highlight_file('Chemin de fichier');

Exemple:

 highlight_file('example.php');

Cette fonction sortira directement le code en surbrillance par défaut. Si vous souhaitez obtenir le code mis en surbrillance sous la forme d'une chaîne, vous pouvez passer le deuxième paramètre True .


2. Risques de sécurité existants

Si le chemin entré par l'utilisateur est directement transmis à Highlight_file , il est facile de provoquer des attaques de traversée de chemin, telles que l'entrée de l'utilisateur:

 ../../../../etc/passwd

Ou accéder aux fichiers sensibles sur le serveur qui ne doivent pas être affichés, provoquant le risque de fuite de données. Par conséquent, le chemin du fichier doit être strictement filtré et vérifié avant d'appeler Highlight_file .


3. Best Practice: Utilisez Highlight_file en conjonction avec la vérification du chemin

Vous trouverez ci-dessous un exemple de code qui montre comment appeler en toute sécurité Highlight_file avec des vérifications strictes sur les chemins de fichier.

 <?php
// Définissez le chemin racine du répertoire de fichiers qui peut être affiché
define('BASE_DIR', __DIR__ . '/php_files/');

// Obtenez le nom de fichier demandé par l&#39;utilisateur
$file = $_GET['file'] ?? '';

// Inspection de base de la sécurité,Évitez les noms de fichiers vides ou contenant des caractères illégaux
if (empty($file) || preg_match('/[^a-zA-Z0-9_\-\.]/', $file)) {
    die('Nom de fichier non valide');
}

// Le chemin absolu vers le fichier d&#39;épissage
$filePath = realpath(BASE_DIR . $file);

// Vérifiez en outre si le chemin est dans le répertoire autorisé,Empêcher les chemins de traverser
if ($filePath === false || strpos($filePath, realpath(BASE_DIR)) !== 0) {
    die('非法Chemin de fichier');
}

// Vérifiez si le fichier existe et est un fichier normal
if (!is_file($filePath)) {
    die('Le fichier n&#39;existe pas');
}

// Appelhighlight_fileCode de mise en évidence de sortie
highlight_file($filePath);
?>

Description des points clés:

  • Répertoire limité : définissez le répertoire racine qui permet l'affichage des fichiers via Base_DIR pour éviter que les utilisateurs d'accéder à des fichiers système à volonté.

  • Vérification des caractères : restreignez les noms de fichiers pour ne contenir que des lettres, des nombres, des soulignements, des lignes et des points horizontaux courts et exclure des caractères spéciaux.

  • Fonction RealPath : analyse et normalise le chemin pour empêcher les attaques de traversée de chemin.

  • Préfixe Path Matching : Confirmez que le chemin réel du fichier doit être préfixé avec le répertoire autorisé pour empêcher les restrictions de contournement.

  • Vérification de l'existence du fichier : assurez-vous que le fichier spécifié existe et est un fichier normal.


4. Démonstration d'échantillon

Supposons que vous placiez les fichiers PHP que vous autorisez à afficher dans le répertoire PHP_FILES du projet et utilisez l'URL lors de l'accès:

 http://gitbox.net/show_code.php?file=test.php

La demande lira et mettra en évidence le contenu du fichier php_files / test.php .


5. Résumé

L'utilisation de la fonction highlight_file avec un contrôle de chemin de fichier strict peut considérablement améliorer la sécurité et la stabilité de la fonction de navigation de code et éviter le risque de croisement de chemin et de fuite de fichiers sensible. La clé de la meilleure pratique est:

  • Répertoire racine accessible limité;

  • Vérifiez que le nom de fichier est conforme à la légalité;

  • Utilisez RealPath comme spécification de chemin;

  • Vérifiez que le chemin du fichier doit être dans le répertoire spécifié;

  • Confirmez que le fichier existe et est un fichier normal.

Un tel processus d'inspection complet garantit non seulement une visualisation flexible du code, mais assure également la sécurité du serveur.