Tu utilises FTP ? C'est peut-être pas une bonne idée

culture générale informatique Sep 14, 2022

Hello

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.