Les systèmes de fichiers POSIX (y compris XFS) autorisent tous les caractères dans les noms de fichiers, à l'exception de NUL (0x00) et de la barre oblique (/; 0x2f).
- NUL marque la fin d'une chaîne de caractères; il n'est donc pas autorisé dans les noms de fichiers.
- /est le séparateur de répertoire, donc il n'est pas autorisé.
- Les noms de fichiers commençant par un point (
.
; 0x2e) sont considérés comme des fichiers cachés. C'est une convention d'utilisateur, pas de noyau ou de système de fichiers.
- Il peut y avoir des conventions que vous suivez - par exemple, les noms de fichiers UTF-8 - dans ce cas, il y a beaucoup, beaucoup plus de restrictions, y compris le formulaire de normalisation à utiliser.
Maintenant, vous voulez probablement interdire d'autres choses aussi; nom de fichier avec toutes sortes de caractères étranges ne sont pas amusants à traiter. Je suggère fortement l'approche de la liste blanche.
En outre, lors de la gestion des noms de fichiers, méfiez-vous de l'entrée ..
dans chaque répertoire. Vous ne voulez pas le traverser et autoriser un chemin arbitraire. "Les caractères composant le nom peuvent être sélectionnés parmi l'ensemble de toutes les valeurs de caractères à l'exclusion du caractère de barre oblique et de l'octet nul."
Source: Single Unix Spec v. 3, §3.169.
La liste des caractères légaux ne serait-elle pas plus courte? –
Oui, c'est probablement vrai. – guns
Si vous souhaitez désinfecter les noms de fichiers, vous pouvez supprimer un certain nombre de caractères légaux des noms de fichiers, tels que les caractères de contrôle (sauf s'ils font partie d'un nom de fichier international). – Eddie