Pipeline d'upload securise avec Flask

Architecture de reference pour construire des chemins d'ingestion de fichiers surs dans des services Flask.

Securite Code Document Image Archive

Separer l'ingestion du traitement

Le handler Flask doit faire un minimum de travail synchrone : authentifier, appliquer des limites grossieres, persister le fichier dans un stockage objet ou une quarantaine, puis mettre en file les jobs de traitement. Les parsings lourds et les conversions appartiennent aux workers, pas aux threads HTTP.

  • Synchrone : auth, controles de taille, ecriture temporaire de l'objet, mise en file du job.
  • Asynchrone : antivirus, transcodage media, OCR, extraction de metadonnees, indexation.

Durcir les limites de stockage et d'execution

Ne faites jamais confiance aux noms de fichiers pour construire des chemins de filesystem. Utilisez des identifiants d'objet generes et des chemins de stockage immuables. Gardez les workers de traitement dans des conteneurs restreints avec dependances en lecture seule et acces reseau minimum. Appliquez des limites de decompression et de recursion pour les archives.

Exposer un automate d'etat clair aux clients

Un automate d'etat visible pour les uploads reduit la charge support et permet aux clients d'implementer correctement les retries et les solutions de repli. Cela ameliore aussi l'auditabilite lors des revues de conformite.

accepted -> queued -> scanning -> transformed -> ready
                       \-> rejected(reason_code)

Outils recommandes

Inspecteur MIME

Comparez extension et signatures pour detecter les incoherences de type.

Ouvrir l'outil

Classificateur MIME par lot

Classez de nombreux fichiers a la fois et remontez les risques d'incoherence.

Ouvrir l'outil

Generateur et verificateur de checksum

Calculez des SHA256 et verifiez l'integrite d'un fichier a partir des hashes attendus.

Ouvrir l'outil