J'essaie de vérifier si une chaîne fournie par l'utilisateur est un simple nom de fichier/dossier. Je prévois d'utiliser os.path.join() pour concaténer ce nom à un répertoire racine prédéfini, mais je souhaite détecter et interdire les chemins qui tentent de traverser n'importe où en dehors de ce répertoire racine. Par exemple, une chaîne avec la valeur 'track001.mp3' serait bien, elle se résoudrait à 'rép_racine/piste001.mp3'. Cependant, ceux-ci doivent être détectés et interdits:Existe-t-il un moyen bien défini de vérifier si un chemin est un simple nom de fichier/dossier en Python?
'../other_root_dir/'
'/etc'
'/'
'~'
'subdir/inner_file'
Vous pouvez utiliser 'os.path.listdir' pour lister tout ce qui est acceptable et vérifier par recoupement ou n'ai-je pas compris votre question? – PYA
Pourquoi "~" serait-il inacceptable? C'est seulement un métacaractère quand il n'est pas cité dans le shell; c'est un tilde littéral ailleurs. – duskwuff