Position actuelle: Accueil> Derniers articles> Quels sont les exemples de codes et les explications détaillées pour l'utilisation de MB_SCRUB pour filtrer les chaînes de nom de fichier?

Quels sont les exemples de codes et les explications détaillées pour l'utilisation de MB_SCRUB pour filtrer les chaînes de nom de fichier?

gitbox 2025-07-01

La sécurité et la légalité des noms de fichiers sont très importantes lors du traitement des téléchargements de fichiers ou des opérations de fichiers. Les noms de fichiers illégaux peuvent conduire à des erreurs système, à des vulnérabilités de sécurité et même à des risques d'écrasement d'écrasement. Cet article présente une fonction personnalisée basée sur PHP MB_SCRUB pour filtrer et réguler les chaînes de nom de fichier, en particulier adaptées aux scénarios contenant des caractères multi-gytets.

Concept de conception de la fonction MB_SCRUB

  1. Codage unifié <br> Afin de gérer correctement les caractères multi-octets (tels que chinois, japonais, coréen, etc.), utilisez d'abord MB_CONVERT_ENCODING pour convertir la chaîne d'entrée en codage UTF-8 pour éviter la troncature des caractères ou le code brouillé.

  2. Filtrage des caractères <br> Par des expressions régulières, un ensemble spécifique de caractères juridiques est préservé. Habituellement, les caractères autorisés par les noms de fichiers sont:

    • Lettres anglaises (capacité)

    • nombre

    • Souligner_

    • Période .

    • Trait d'union -

    Ces caractères répondent non seulement à la plupart des exigences du nom de fichier, mais évitent également les risques apportés par des caractères spéciaux.

  3. Évitez les débuts spéciaux <br> Les noms de fichiers commencent par les points indiquent généralement des fichiers cachés ou des fichiers système spéciaux. Utilisez LTRIM pour supprimer les points redondants au début pour vous assurer que les fichiers cachés ne sont pas créés par inadvertance.

  4. Protection de cordes vide <br> Si le nom de fichier est une chaîne vide après le filtrage, un nom de fichier par défaut (tel que Default_FileName ) sera automatiquement attribué pour empêcher les opérations de fichiers ultérieures à partir d'erreurs.

Exemple de description du code

Dans l'exemple, le nom du fichier est le nom de fichier illégal <>: "/ \ |? *. Txt , qui contient de nombreux caractères illégaux. Après le traitement MB_SCRUB , seuls les caractères autorisés sont laissés. L'exemple de sortie est le suivant:

 <span><span><span class="hljs-section">Nom de fichier d&#39;origine:Nom de fichier illégal&lt;&gt;:"/\|?*.txt</span></span><span>
Nom de fichier filtré:txt
</span></span>

L'exemple ici est relativement simple. Dans les projets réels, vous pouvez ajuster le jeu de caractères autorisé en fonction de vos besoins, ou le combiner avec des règles supplémentaires (telles que limiter la longueur, une extension limite, etc.).

Recommandations pour une utilisation

  • En combinaison avec la vérification de l'extension de fichier : lors du filtrage des noms de fichiers, la légalité de l'extension doit également être vérifiée séparément pour empêcher le téléchargement des fichiers de script malveillants.

  • Limiter le nom du fichier Longueur : Évitez les problèmes de compatibilité système causés par le nom de fichier excessif.

  • Sécurité du chemin : le filtrage des noms de fichiers ne peut pas remplacer complètement les vérifications de la sécurité du chemin pour éviter les vulnérabilités telles que la traversée du répertoire.

  • Prise en charge multilingue : MB_SCRUB possède un bon support pour les caractères multi-octets et convient aux applications internationales.

En utilisant rationnellement des fonctions comme MB_SCRUB , la sécurité et la stabilité du traitement du nom de fichier peuvent être considérablement améliorées et est l'une des étapes importantes du téléchargement de fichiers ou de l'opération de fichier PHP.