Je travaille sur une application de messagerie instantanée, où les utilisateurs peuvent recevoir des fichiers de leurs amis.Comment nettoyer les noms de fichiers créés par l'utilisateur pour une application en réseau?
Les noms des fichiers reçus sont définis par l'expéditeur du fichier, et plusieurs fichiers peuvent être envoyés ensemble avec la possibilité de sous-répertoires. Par exemple, deux fichiers envoyés ensemble peuvent être "1" et "sub/2" de sorte que les résultats téléchargés doivent être comme "downloads/1" et "downloads/sub/2".
Je suis inquiet au sujet des implications de sécurité de ceci. Juste au-dessus de ma tête, deux noms de fichiers potentiellement dangereux seraient quelque chose comme "../../../quelque choseNasty" ou "~/somethingNasty" pour les utilisateurs Unix-like. D'autres problèmes potentiels qui me viennent à l'esprit sont les noms de fichiers avec des caractères qui ne sont pas pris en charge sur le système de fichiers cible, mais cela semble beaucoup plus difficile et peut-être préférable d'ignorer? J'envisage de supprimer les noms de fichiers reçus pour ".." et "~" mais ce type d'approche de liste noire où je pense individuellement aux cas problématiques ne semble guère être la recette d'une bonne sécurité. Quelle est la méthode recommandée pour assainir les noms de fichiers pour s'assurer que rien de sinistre ne se produise?
Si cela fait une différence, mon application fonctionne sur C++ avec le framework QT.