Tu utilises FTP ? C'est peut-être pas une bonne idée
Sep 14, 2022Hello
Utiliser le FTP pour échanger des données entre systèmes, c'est comme utiliser des pigeons voyageurs (ou des corbeaux 👇🏾 )
Ça fonctionne, mais on a fait mieux depuis
Déjà, pourquoi on utilise le FTP pour s'échanger des fichiers
Le protocole FTP est simple à utiliser, il est vieux et connu de tous, il est simple à mettre en place et les Lib pour l'utiliser sont faciles.
Un scénario classique, un peu évolué avec FTP :
Je dois envoyer des commandes de mes clients vers un fournisseur
Celui-ci me dit "mon système est vieux et n'accepte que le FTP avec des fichiers CSV"
Là, tu ne peux pas faire autrement, tu dis OK.
Donc :
- Tu génères des fichiers CSV
- Tu envoies sur le FTP de ton fournisseur dans un dossier spécifique
- Tu génères un fichier de contrôle qui contient la liste des fichiers envoyés et leur hachage
- Ton fournisseur récupère le fichier de contrôle
- Il a un CRON qui récupère les fichiers listés dans ton fichier de contrôle et vérifie le hachage pour être sûr que les fichiers sont complets
- Il déplace les fichiers traités dans un dossier toujours sur le FTP (généralement le dossier "DONE")
- Il te renvoie un fichier ACK, pour te dire que c'est bon
- Toi, ton CRON récupère le fichier ACK pour mettre à jour ton propre système
Sur le papier, c'est une affaire qui roule. On gère les erreurs et les cas de fichiers tronqués par exemple.
Dans la vraie vie :
- Le protocole FTP n'est pas sécurisé par défaut
- On peut donc intercepter les logins/mdp utilisés pour se connecter et voler les informations
- Le transfert n'est pas sécurisé : on peut donc intercepter les données directement pendant leur transit
- Surtout si ce sont des données Clients, Commandes... ça vaut de l'or pour la concurrence
- RGPD, tout ça tout ça
- Il n'y a pas de chiffrement sur le stockage à destination
- Tu es obligé de faire tourner des CRONs pour consulter régulièrement
- Tu es obligé de mettre des fichiers de contrôles pour être sûr que les transferts se passent bien
- Le protocole ne donne rien pour te garantir que ton fichier est arrivé en entier de l'autre côté
Mis bout à bout, ça fait plein de raison pour ne plus utiliser FTP dès que c'est possible
Je te donne quelques alternatives
Tu peux les étudier et voir si c'est possible de migrer
SFTP
Attention, ce n'est pas la version sécurisée de FTP (genre HTTP et HTTPS)
C'est un protocole différent qui utilise SSH (réputé très sécurisé) pour l'échange de fichiers
Ça demande un nouveau type de serveur chez ton fournisseur (mais tous les serveurs FTP récents savent faire du SFTP)
Tu peux utiliser un système de clé privée qui évite d'utiliser un login/mdp sur Internet
Ça demande aussi de revoir ton code pour utiliser la bonne Lib et aussi comprendre comment marchent les clés privées.
AWS S3 + HTTPS
Utiliser un service cloud de gestion de fichiers. Les API dans tous les langages existent.
Tu utilises du HTTPS donc sécurisé.
Pas besoin de serveur à maintenir (ni par toi ni par ton fournisseur)
Tu as des fonctionnalités avancées du type trigger : si un fichier est placé dans tel dossier, alors exécute tel code ...
Pas de gestion de fichier de contrôle à gérer, tu utilises les codes retour de l'API pour gérer tes erreurs.
Une API dédiée
Si c'est pour envoyer des commandes à ton fournisseur, au lieu de passer par un fichier, tu peux passer par l'API du système de ton fournisseur.
Tu as tous les avantages : sécurisé, gestion des erreurs, traitement en synchrone...
Par contre, ça demande plus de maturité côté Fournisseur.
Conclusion
Ce n’est pas parce qu'on a toujours fait comme ça et que notre interlocuteur est dans le passé, qu'il faut continuer à faire des conneries :p
Voilà :)
Imrane 🏖
La newsletter pour ne rien louper
Rejoins les 2500 lecteurs de la newsletter pour obtenir des conseils, des stratégies et des ressources pour développer et monétiser tes compétences Tech.