02 déc. 2025·8 min de lecture

Analyse antivirus pour les téléversements de fichiers : options d'architecture pour les applications

Analyse antivirus des téléversements de fichiers expliquée pour les apps riches en documents : stockage en quarantaine, files de scan, contrÎle d'accÚs, retries et workflows sûrs de libération.

Analyse antivirus pour les téléversements de fichiers : options d'architecture pour les applications

Le problĂšme en termes clairs : des fichiers dangereux qui entrent dans votre application

Si votre application permet aux utilisateurs de tĂ©lĂ©verser des documents, vous acceptez des fichiers que vous n'avez pas créés. Dans les produits riches en documents (portails clients, systĂšmes RH, applications de sinistres, onboarding de fournisseurs), les tĂ©lĂ©versements sont frĂ©quents et les utilisateurs partagent souvent des fichiers provenant de threads d'e‑mails, de partages ou de tiers. Cela fait de ces applications une cible pratique : un seul tĂ©lĂ©versement rĂ©ussi peut se propager Ă  de nombreux tĂ©lĂ©chargements.

Les risques ne se limitent pas Ă  un « virus ». Un fichier Word ou Excel peut contenir des macros malveillantes, un PDF peut ĂȘtre conçu pour exploiter des failles du lecteur, et une « facture » peut ĂȘtre un document d'hameçonnage qui incite quelqu'un Ă  appeler un faux numĂ©ro ou Ă  saisir des identifiants. Certains fichiers sont empoisonnĂ©s de maniĂšre plus discrĂšte, par exemple en cachant une charge utile dans un ZIP, en utilisant des doubles extensions (report.pdf.exe) ou en intĂ©grant du contenu distant qui contacte un serveur dĂšs l'ouverture.

Se fier Ă  un simple antivirus installĂ© sur un seul serveur ne suffit pas. Les tĂ©lĂ©versements peuvent atteindre plusieurs instances d'app, passer entre des systĂšmes de stockage ou ĂȘtre servis depuis un stockage d'objets ou un CDN. Si un chemin de code expose accidentellement le fichier brut, des utilisateurs peuvent le tĂ©lĂ©charger avant la fin du scan. Les mises Ă  jour, les mauvaises configurations et les accĂšs administrateurs « temporaires » peuvent aussi contourner le scan au fil du temps.

L'objectif clair pour l'analyse antivirus des tĂ©lĂ©versements de fichiers est simple : aucun fichier non scannĂ© ne doit jamais ĂȘtre tĂ©lĂ©chargeable ou consultable par quelqu'un qui n'est pas explicitement autorisĂ© Ă  examiner le contenu mis en quarantaine.

Définissez ce que signifie « sûr » comme une rÚgle métier, pas comme une impression. Par exemple :

  • Doit passer un scan antivirus avec un jeu de signatures Ă  jour
  • Doit correspondre aux types de fichiers et limites de taille autorisĂ©s
  • Doit ĂȘtre stockĂ© et servi uniquement depuis des emplacements approuvĂ©s
  • Doit avoir une traçabilitĂ© : qui a tĂ©lĂ©versĂ©, quand et statut final
  • Doit ĂȘtre bloquĂ© jusqu'Ă  une dĂ©cision finale : libĂ©rer ou rejeter

Si vous construisez avec une plateforme comme AppMaster, traitez le « statut de scan » comme un champ de premiĂšre classe dans votre modĂšle de donnĂ©es et faites en sorte que chaque action de tĂ©lĂ©chargement le vĂ©rifie. Ce garde‑fou prĂ©vient beaucoup d'erreurs coĂ»teuses.

Ce que signifie vraiment la quarantaine pour les documents téléversés

La « quarantaine » est mieux pensĂ©e comme un Ă©tat dans votre systĂšme, pas seulement comme un dossier de stockage. L'idĂ©e clĂ© est simple : le fichier existe, mais personne ne peut l'ouvrir ou le tĂ©lĂ©charger tant que votre application n'a pas un rĂ©sultat de scan clair et enregistrĂ©. C'est le cƓur de l'analyse antivirus pour les tĂ©lĂ©versements de fichiers.

La quarantaine fonctionne généralement comme un petit cycle de vie avec des statuts explicites. Rendre l'état explicite rend plus difficile la fuite accidentelle de contenu dangereux via un aperçu, une URL directe ou un job d'export.

Un ensemble pratique d'états de fichier ressemble à ceci :

  • reçu (tĂ©lĂ©versement terminĂ©, pas encore scannĂ©)
  • en cours d'analyse (pris par un worker)
  • sain (ok pour libĂ©ration)
  • rejetĂ© (malware dĂ©tectĂ© ou violation de politique)
  • Ă©chec (erreur du scanner, timeout ou fichier corrompu)

La quarantaine a aussi besoin des bons métadonnées pour que vous puissiez appliquer les accÚs et auditer ce qui s'est passé plus tard. Au minimum, stockez : le propriétaire (utilisateur ou organisation), le statut, le nom et type de fichier d'origine, le checksum (pour déduplication et vérifications de falsification), l'emplacement de stockage et les horodatages (téléversé, scan commencé, scan terminé). Beaucoup d'équipes enregistrent aussi la version du scanner et les détails du verdict du scan.

La rĂ©tention est une dĂ©cision de politique, mais elle doit ĂȘtre intentionnelle. Gardez les fichiers en quarantaine uniquement le temps nĂ©cessaire pour les scanner et dĂ©boguer les Ă©checs. Une rĂ©tention courte rĂ©duit les risques et les coĂ»ts, mais vous devez garder suffisamment de temps pour enquĂȘter sur les incidents et aider les utilisateurs qui demandent « oĂč est passĂ© mon tĂ©lĂ©versement ? »

Enfin, dĂ©cidez quoi faire des fichiers qui ne finissent jamais de se scanner. Fixez un temps maximal de scan et un horodatage d'expiration. Quand le dĂ©lai est dĂ©passĂ©, passez le fichier en Ă©chec, bloquez l'accĂšs et soit retentez automatiquement un nombre limitĂ© de fois, soit supprimez‑le et demandez Ă  l'utilisateur de re‑tĂ©lĂ©verser.

Patterns de stockage temporaire qui réduisent le risque

Le stockage temporaire est l'endroit oĂč se produisent la plupart des problĂšmes d'upload. Le fichier est dans votre systĂšme, mais vous ne savez pas encore s'il est sĂ»r, donc vous avez besoin d'un emplacement facile Ă  verrouiller et difficile Ă  exposer par erreur.

Le disque local peut fonctionner pour un serveur unique, mais c'est fragile. Si vous scalez sur plusieurs serveurs d'app, il faut partager le stockage, copier des fichiers et garder des permissions cohérentes. Le stockage d'objets (type bucket S3 ou conteneur cloud) est souvent plus sûr pour les applications riches en documents parce que les rÚgles d'accÚs sont centralisées et les logs plus clairs.

Un pattern simple pour l'analyse antivirus des tĂ©lĂ©versements est de sĂ©parer le stockage « quarantaine » du stockage « clean ». Vous pouvez le faire avec deux buckets/conteneurs, ce qui rĂ©duit les erreurs, ou avec un prĂ©fixe strict dans un seul bucket, ce qui peut ĂȘtre moins coĂ»teux et plus simple Ă  gĂ©rer.

Si vous utilisez des prĂ©fixes, rendez‑les impossibles Ă  confondre. PrĂ©fĂ©rez une structure comme quarantine/<tenant_id>/<upload_id> et clean/<tenant_id>/<document_id>, pas des noms fournis par l'utilisateur. Ne rĂ©utilisez jamais le mĂȘme chemin pour des Ă©tats diffĂ©rents.

Gardez ces rĂšgles en tĂȘte :

  • N'autorisez pas les lectures publiques sur la quarantaine, mĂȘme « temporairement ».
  • GĂ©nĂ©rez des noms d'objet cĂŽtĂ© serveur, pas cĂŽtĂ© client.
  • Partitionnez par locataire ou compte pour rĂ©duire le rayon d'impact.
  • Stockez les mĂ©tadonnĂ©es (propriĂ©taire, statut, checksum) dans votre base de donnĂ©es, pas dans le nom de fichier.

Chiffrez au repos, et soyez strict sur qui peut déchiffrer. L'API de téléversement doit pouvoir écrire en quarantaine, le scanner doit pouvoir lire la quarantaine et écrire dans le stockage clean, et l'application publique ne doit lire que depuis le clean. Si votre cloud supporte des policies de clés, liez les droits de décryptage au plus petit ensemble de rÎles possible.

Les gros fichiers nĂ©cessitent des prĂ©cautions supplĂ©mentaires. Pour les uploads multipart, ne marquez pas l'objet comme « prĂȘt » tant que la derniĂšre partie n'est pas commitĂ©e et que la taille et le checksum attendus sont enregistrĂ©s. Une approche sĂ»re courante est d'uploader les parties en quarantaine, puis de copier ou promouvoir l'objet vers clean uniquement aprĂšs un scan concluant.

Exemple : dans un portail client construit avec AppMaster, traitez chaque tĂ©lĂ©versement comme « pending », stockez‑le dans un bucket de quarantaine, et n'affichez un bouton de tĂ©lĂ©chargement que lorsque le statut de scan passe Ă  « clean ».

Options d'architecture : scan inline vs scan en arriùre‑plan

Quand vous ajoutez l'analyse antivirus pour les tĂ©lĂ©versements, vous choisissez gĂ©nĂ©ralement entre deux flux : scanner inline (l'utilisateur attend) ou scanner en arriĂšre‑plan (l'app accepte le tĂ©lĂ©versement mais bloque l'accĂšs jusqu'Ă  ce qu'il soit validĂ©). Le bon choix dĂ©pend moins du « niveau de sĂ©curitĂ© » (les deux peuvent ĂȘtre sĂ»rs) et plus de la rapiditĂ©, de la fiabilitĂ© et de la frĂ©quence des tĂ©lĂ©versements.

Option 1 : Scan inline (l'utilisateur attend)

Le scan inline signifie que la requĂȘte de tĂ©lĂ©versement ne se termine pas tant que le scanner n'a pas renvoyĂ© un rĂ©sultat. C'est simple en apparence : un seul pas — tĂ©lĂ©versement, scan, acceptation ou rejet.

Le scan inline est acceptable quand les fichiers sont petits, les tĂ©lĂ©versements rares et que vous pouvez garder un temps d'attente prĂ©visible. Par exemple, un outil d'Ă©quipe oĂč les utilisateurs tĂ©lĂ©versent quelques PDF par jour peut tolĂ©rer une pause de 3 Ă  10 secondes. L'inconvĂ©nient est qu'un scan lent rend l'app lente. Les timeouts, retry et rĂ©seaux mobiles peuvent transformer un fichier sain en mauvaise expĂ©rience utilisateur.

Option 2 : Scan en arriùre‑plan (asynchrone)

Le scan asynchrone stocke d'abord le fichier, le marque « en quarantaine » et pousse un job dans une file de scan. L'utilisateur obtient une réponse rapide « téléversement reçu », mais ne peut pas télécharger ou prévisualiser le fichier tant qu'il n'est pas validé.

Cette approche est préférable pour les volumes importants, les gros fichiers et les heures de pointe parce qu'elle répartit le travail et garde votre app réactive. Elle permet aussi de scaler les workers de scan séparément des serveurs web/API.

Un hybride pratique : effectuer des vĂ©rifications rapides inline (allowlist de types, limites de taille, validations de format basiques), puis faire l'antivirus complet en arriĂšre‑plan. Cela filtre les problĂšmes Ă©vidents sans faire attendre tous les utilisateurs.

Voici une maniĂšre simple de choisir :

  • Petits fichiers, faible volume, workflows qui doivent savoir tout de suite : scan inline
  • Gros fichiers, beaucoup de tĂ©lĂ©versements, ou temps de scan imprĂ©visible : scan en arriĂšre‑plan
  • SLA stricts pour la rĂ©activitĂ© : scan en arriĂšre‑plan + UI de statut claire
  • Workloads mixtes : hybride (vĂ©rifications rapides d'abord, scan complet en asynchrone)

Si vous construisez avec AppMaster, ce choix correspond souvent soit à un endpoint API synchrone (inline) soit à un Business Process qui enfile le travail de scan et met à jour le statut du fichier à l'arrivée des résultats.

Pas Ă  pas : construire une file de scan asynchrone

Préparez-vous aux pannes du scanner
Gérez les retries, les timeouts et les scans bloqués avec des statuts clairs et des alertes.
Construire le workflow

Le scan asynchrone signifie que vous acceptez un tĂ©lĂ©versement, le verrouillez en quarantaine, et le scannez en arriĂšre‑plan. Les utilisateurs n'obtiennent pas l'accĂšs avant que le scanner ne dĂ©clare le fichier sĂ»r. C'est gĂ©nĂ©ralement l'architecture la plus pratique pour les applications riches en documents.

1) DĂ©finir le message de la file (gardez‑le lĂ©ger)

Traitez la file comme une to‑do list. Chaque tĂ©lĂ©versement crĂ©e un message qui pointe vers le fichier, pas le fichier lui‑mĂȘme.

Un message simple inclut généralement :

  • ID de fichier (ou clĂ© d'objet) et ID de locataire/projet
  • ID de l'utilisateur qui a tĂ©lĂ©versĂ©
  • Timestamp du tĂ©lĂ©versement et checksum (optionnel mais utile)
  • NumĂ©ro de tentative (ou compteur de retry sĂ©parĂ©)

Évitez de mettre des octets bruts dans la file. Les gros payloads peuvent dĂ©passer les limites, coĂ»ter plus cher et augmenter l'exposition.

2) Construire le flux du worker (récupérer, scanner, enregistrer)

Un worker lit un message, récupÚre le fichier depuis le stockage de quarantaine, le scanne, puis écrit une décision.

Un flux clair :

  • RĂ©cupĂ©rer le fichier par ID depuis le stockage de quarantaine (bucket privĂ© ou volume privĂ©)
  • Lancer le scanner (moteur AV ou service de scan)
  • Écrire le rĂ©sultat dans votre base de donnĂ©es : statut (clean, infected, error), nom/version du scanner, et horodatages
  • Si clean : dĂ©placer le fichier vers le stockage approuvĂ© ou basculer un flag d'accĂšs pour qu'il devienne tĂ©lĂ©chargeable
  • Si infectĂ© : le laisser en quarantaine (ou le supprimer) et notifier les personnes concernĂ©es

3) Rendre le processus idempotent (sûr à retraiter)

Les workers plantent, les messages sont livrĂ©s deux fois, et les retries ont lieu. Concevez pour que le scan du mĂȘme fichier plusieurs fois ne cause pas de dommages. Utilisez une source de vĂ©ritĂ© unique comme files.status et n'autorisez que des transitions valides, par exemple : uploaded -> scanning -> clean/infected/error. Si un worker voit clean, il doit arrĂȘter et ack le message.

4) ContrÎler la concurrence (éviter les afflux de scans)

Fixez des limites par worker et par locataire. Limitez le nombre de scans concurrents et envisagez des files sĂ©parĂ©es pour les gros fichiers. Cela empĂȘche un client trĂšs actif de consommer toute la capacitĂ© du scanner.

5) Gérer les échecs avec retries et piste d'audit

Utilisez des retries pour les erreurs temporaires (timeout du scanner, problĂšme rĂ©seau) avec un nombre d'essais max. AprĂšs cela, envoyez le message vers une dead‑letter queue pour revue manuelle.

Conservez une piste d'audit : qui a téléversé le document, quand il est entré en quarantaine, quel scanner a tourné, quelle décision a été prise, et qui a approuvé ou supprimé le fichier. Ce journal est aussi important que l'analyse antivirus, surtout pour les portails clients et la conformité.

ContrÎle d'accÚs : garder les fichiers en quarantaine vraiment privés

La quarantaine n'est pas juste un statut dans la base. C'est une promesse que personne ne peut ouvrir le fichier tant qu'il n'est pas prouvĂ© sĂ»r. La rĂšgle la plus sĂ»re est simple : ne jamais servir les fichiers en quarantaine via des URLs publiques, mĂȘme « temporaires ».

Un bon flux de téléchargement est ennuyeux et strict. L'application doit traiter chaque téléchargement comme une action protégée, et non comme la récupération d'une image.

  1. Demande de téléchargement
  2. Vérifier la permission de l'utilisateur pour ce fichier spécifique
  3. Vérifier le statut du fichier (quarantaine, clean, rejeté)
  4. Servir le fichier uniquement si le statut est clean

Si vous utilisez des URLs signĂ©es, gardez la mĂȘme idĂ©e : gĂ©nĂ©rez‑les seulement aprĂšs vĂ©rification des permissions et du statut, et rendez‑les de courte durĂ©e. Une expiration courte rĂ©duit les dĂ©gĂąts si le lien fuit via des logs, captures d'Ă©cran ou un e‑mail transfĂ©rĂ©.

L'accÚs basé sur les rÎles aide à éviter la logique des « cas spéciaux » qui devient une faille. RÎles typiques pour les apps documentaires :

  • TĂ©lĂ©verseur : voit ses propres tĂ©lĂ©versements et leur statut de scan
  • Relecteur : peut voir les fichiers clean, et parfois voir la quarantaine seulement via un outil de revue sĂ©curisĂ©
  • Admin : peut investiguer, relancer un scan et outrepasser l'accĂšs si nĂ©cessaire
  • Utilisateur externe : n'accĂšde qu'aux documents explicitement partagĂ©s avec lui

ProtĂ©gez aussi contre la dĂ©couverte d'IDs. N'exposez pas d'IDs incrĂ©mentaux comme 12345. Utilisez des IDs opaques et autorisez toujours par utilisateur et par fichier (pas seulement « tout utilisateur connectĂ© »). MĂȘme si votre bucket est privĂ©, un endpoint API nĂ©gligent peut quand mĂȘme fuir du contenu en quarantaine.

Quand vous implĂ©mentez l'analyse antivirus pour les tĂ©lĂ©versements, la couche d'accĂšs est lĂ  oĂč surviennent la plupart des Ă©checs rĂ©els. Sur une plateforme comme AppMaster, vous appliqueriez ces vĂ©rifications dans vos endpoints API et votre logique mĂ©tier avant de gĂ©nĂ©rer toute rĂ©ponse de tĂ©lĂ©chargement, pour que la quarantaine reste privĂ©e par dĂ©faut.

Libération, rejet et retries : gérer les résultats du scan

Ajoutez des traces d'audit pour les téléversements
Ajoutez des champs d'audit : qui a téléversé, quand le fichier a été scanné et décision finale.
Essayer

Une fois qu'un fichier a fini d'ĂȘtre scannĂ©, l'essentiel est de le positionner dans un Ă©tat clair et de rendre la suite prĂ©visible. Traitez le rĂ©sultat du scan comme une porte : rien ne devient tĂ©lĂ©chargeable tant que la porte ne l'autorise pas.

Un ensemble d'issues simple couvre la plupart des systĂšmes :

  • Clean : libĂ©rer le fichier de la quarantaine et autoriser l'accĂšs normal.
  • Infected : bloquer l'accĂšs dĂ©finitivement et dĂ©clencher votre workflow pour fichiers infectĂ©s.
  • Unsupported : le scanner ne peut pas Ă©valuer ce type (ou il est protĂ©gĂ© par mot de passe). Le garder bloquĂ©.
  • Scan error : Ă©chec temporaire (timeout, service indisponible). Le garder bloquĂ©.

Les messages aux utilisateurs doivent ĂȘtre clairs et rassurants. Évitez des formulations alarmantes comme « Votre compte est compromis ». Mieux vaut : « Le fichier est en cours de vĂ©rification. Vous pouvez continuer Ă  travailler. » Si le fichier est bloquĂ©, indiquez la marche Ă  suivre : « TĂ©lĂ©versez un autre type de fichier » ou « RĂ©essayez plus tard ». Pour les fichiers non supportĂ©s, soyez prĂ©cis (par exemple : « Les archives chiffrĂ©es ne peuvent pas ĂȘtre scannĂ©es »).

Pour les fichiers infectés, décidez tÎt si vous supprimez ou conservez. Supprimer est plus simple et réduit le risque. Conserver peut aider aux audits, mais seulement si vous le faites dans une zone isolée avec accÚs strict et rétention courte, et en consignant qui peut y accéder (idéalement, personne sauf les admins sécurité).

Les retries sont utiles, mais uniquement pour les erreurs probablement temporaires. Fixez une petite politique de retry pour éviter d'accumuler un backlog infini :

  • Retenter sur timeouts et indisponibilitĂ© du scanner.
  • Ne pas retenter sur « infected » ou « unsupported ».
  • Caper les retries (par exemple 3) puis marquer en Ă©chec.
  • Ajouter du backoff entre les tentatives pour Ă©viter la surcharge.

Enfin, traitez les échecs répétés comme un problÚme ops, pas un problÚme utilisateur. Si beaucoup de fichiers passent en « scan error » en peu de temps, alertez l'équipe et mettez en pause les nouvelles libérations. Dans AppMaster, modélisez ces états en base de données et routez les notifications via les modules de messagerie intégrés pour que les bonnes personnes soient informées rapidement.

Scénario d'exemple : un portail client avec beaucoup de documents

Séparez la quarantaine et le stockage clean
Concevez un stockage de quarantaine privĂ© et des chemins de stockage ‘clean’ pour chaque locataire.
Commencer

Un portail client permet aux clients de tĂ©lĂ©verser factures et contrats par projet. C'est un cas courant oĂč l'analyse antivirus pour les tĂ©lĂ©versements importe, car les utilisateurs glissent ce qu'ils ont sur leur bureau, y compris des fichiers transfĂ©rĂ©s par d'autres.

Quand un client téléverse un PDF, le portail l'enregistre dans un emplacement temporaire privé et crée un enregistrement en base avec le statut Pending scan. Le fichier n'est pas encore affiché comme téléchargeable. Un worker de scan récupÚre le fichier depuis une file, lance le scan, puis met à jour l'enregistrement en Clean ou Blocked.

Dans l'UI, le client voit le document apparaßtre immédiatement, mais avec un badge Pending clair. Le nom et la taille du fichier sont visibles pour confirmer que le téléversement a réussi, mais le bouton Télécharger reste désactivé tant que le scan n'est pas clean. Si le scan prend plus de temps que prévu, le portail peut afficher un message simple : « Nous vérifions ce fichier. Réessayez dans une minute. »

Si le scanner signale un document, le client voit Blocked avec une note non technique : « Ce fichier a échoué à une vérification de sécurité. » Le support et les admins ont une vue séparée qui inclut la raison du scan et les actions possibles. Ils peuvent :

  • le garder bloquĂ© et demander un nouveau tĂ©lĂ©versement
  • le supprimer et enregistrer la raison
  • le marquer comme faux positif uniquement si la politique le permet

En cas de litiges (« Je l'ai téléversé hier et vous l'avez perdu »), de bons logs sont essentiels. Conservez les horodatages pour téléversement reçu, scan commencé, scan terminé, changement de statut et qui a effectué quelle action. Enregistrez aussi le hash du fichier, le nom d'origine, le compte du téléverseur, l'adresse IP et le code de résultat du scanner. Si vous construisez cela dans AppMaster, le Data Designer plus un Business Process simple peuvent gérer ces statuts et champs d'audit sans exposer les fichiers en quarantaine aux utilisateurs ordinaires.

Erreurs courantes qui créent de vraies failles de sécurité

La plupart des échecs de sécurité liés aux uploads ne sont pas des hacks sophistiqués. Ce sont des choix de conception mineurs qui font qu'un fichier dangereux se comporte comme un document normal.

Un problÚme classique est une condition de course : l'app accepte un téléversement, renvoie une URL de téléchargement, et l'utilisateur (ou un autre service) peut récupérer le fichier avant la fin du scan. Si vous gérez l'analyse antivirus des téléversements, traitez « téléversé » et « disponible » comme deux états distincts.

Voici des erreurs récurrentes :

  • MĂ©langer fichiers clean et quarantaine dans le mĂȘme bucket/dossier, puis compter sur des rĂšgles de nommage. Une mauvaise permission ou un mauvais chemin et la quarantaine devient inutile.
  • Se fier aux extensions de fichier, au type MIME ou aux vĂ©rifications cĂŽtĂ© client. Un attaquant peut renommer n'importe quoi en .pdf et votre UI ne verra rien.
  • Ne pas prĂ©voir l'indisponibilitĂ© du scanner. Si le scanner est lent ou hors ligne, les fichiers peuvent stagner en pending, et les Ă©quipes commencent Ă  ajouter des overrides manuels non sĂ»rs.
  • Laisser les workers en arriĂšre‑plan ignorer les mĂȘmes rĂšgles d'autorisation que l'API principale. Un worker qui peut lire « n'importe quel fichier » est une Ă©lĂ©vation silencieuse de privilĂšges.
  • Publier des IDs faciles Ă  deviner (numĂ©ros incrĂ©mentaux) pour des items en quarantaine, mĂȘme si vous pensez que le contenu est protĂ©gĂ©.

Les tests sont un autre angle faible. Les Ă©quipes testent avec quelques petits fichiers propres et pensent que c'est terminĂ©. Testez aussi les gros uploads, les fichiers corrompus et les documents protĂ©gĂ©s par mot de passe, car ce sont prĂ©cisĂ©ment les cas oĂč les scanners ou parseurs Ă©chouent ou prennent trop de temps.

Un exemple concret : un utilisateur télécharge un « contract.pdf » qui est en réalité un exécutable renommé à l'intérieur d'une archive. Si votre portail le sert instantanément, ou si votre support peut accéder à la quarantaine sans contrÎles adéquats, vous avez créé une voie directe de diffusion vers d'autres utilisateurs.

Checklist rapide avant la mise en production

Ajoutez une voie de revue et d'override
Créez des écrans d'administration pour examiner les éléments en quarantaine sans les exposer aux utilisateurs.
Commencer maintenant

Avant de dĂ©ployer l'analyse antivirus des tĂ©lĂ©versements, faites un dernier passage sur les zones oĂč les Ă©quipes supposent « ça va » et dĂ©couvrent plus tard que non. L'objectif est simple : un fichier dangereux ne doit jamais devenir lisible parce que quelqu'un a devinĂ© une URL, relancĂ© une requĂȘte ou utilisĂ© un lien mis en cache.

Commencez par le flux utilisateur. Tout tĂ©lĂ©chargement, aperçu ou action « ouvrir le fichier » doit reverifier le statut de scan au moment de la requĂȘte, pas seulement au tĂ©lĂ©versement. Cela vous protĂšge des conditions de course (clic immĂ©diat), des rĂ©sultats de scan retardĂ©s et des cas oĂč un fichier est re‑scannĂ©.

Utilisez cette checklist pré‑dĂ©ploiement comme base minimale :

  • Le stockage en quarantaine est privĂ© par dĂ©faut : pas d'accĂšs public au bucket, pas de « anyone with the link », et pas de service direct depuis le stockage brut.
  • Chaque enregistrement de fichier a un propriĂ©taire (utilisateur, Ă©quipe ou locataire) et un Ă©tat de cycle de vie clair comme pending, clean, infected ou failed.
  • Votre file de scan et vos workers ont des retries bornĂ©s, des rĂšgles de backoff claires et des alertes quand des Ă©lĂ©ments restent bloquĂ©s ou Ă©chouent en sĂ©rie.
  • Des logs d'audit existent pour les tĂ©lĂ©versements, les rĂ©sultats de scan et les tentatives de tĂ©lĂ©chargement (y compris les tentatives bloquĂ©es), avec qui, quand et pourquoi.
  • Un override manuel existe pour les cas rares, mais est rĂ©servĂ© aux admins, enregistrĂ© et limitĂ© dans le temps (pas de bouton « marquer clean » silencieux).

Enfin, assurez‑vous de pouvoir observer le systĂšme de bout en bout. Vous devez pouvoir rĂ©pondre : « Combien de fichiers sont en attente de scan maintenant ? » et « Quels locataires rencontrent des Ă©checs ? » Si vous bĂątissez sur AppMaster, modĂ©lisez le cycle de vie des fichiers dans le Data Designer et appliquez les vĂ©rifications d'Ă©tat dans le Business Process Editor pour que les rĂšgles restent cohĂ©rentes entre web et mobile.

Étapes suivantes : transformer le design en application fonctionnelle

Commencez par noter les Ă©tats exacts que peuvent prendre vos fichiers et ce que permet chaque Ă©tat. Gardez‑le simple et explicite : « uploaded », « queued », « scanning », « clean », «infected», «scan_failed». Ajoutez ensuite les rĂšgles d'accĂšs pour chacun. Qui peut voir le fichier, le tĂ©lĂ©charger ou le supprimer tant qu'il n'est pas encore de confiance ?

Ensuite, choisissez l'approche qui correspond à votre volume et à vos objectifs UX. Le scan inline est plus simple à expliquer, mais peut ralentir les téléversements. Le scan asynchrone scale mieux pour les apps documentaires, mais ajoute des états, des files et une UI « pending ».

Une façon pragmatique de passer du design Ă  la construction est de prototyper le flux complet de bout en bout avec des documents rĂ©alistes (PDF, fichiers Office, images, archives) et des comportements utilisateurs rĂ©alistes (multiples tĂ©lĂ©versements, annulations, retries). Ne vous arrĂȘtez pas au « le scanner marche ». Validez que l'app ne sert jamais un fichier en quarantaine, mĂȘme par accident.

Voici un plan de construction simple réalisable en une semaine :

  • DĂ©finir Ă©tats de fichiers, transitions et rĂšgles d'accĂšs sur une page
  • Choisir inline, async ou hybride pour l'analyse antivirus et documenter les compromis
  • ImplĂ©menter upload -> stockage en quarantaine -> job de scan -> callback de rĂ©sultat, avec logs d'audit
  • Construire les Ă©tats UI que verront les utilisateurs (pending, blocked, failed, approved)
  • Ajouter du monitoring dĂšs le premier jour : taille du backlog, taux d'Ă©chec et temps jusqu'Ă  clean

Si vous construisez sans code, AppMaster peut vous aider à modéliser les métadonnées des fichiers (statut, propriétaire, checksum, horodatages), créer des écrans d'upload et de revue, et orchestrer le workflow de scan avec de la logique métier et du traitement style file d'attente. Cela vous permet de tester le flux réel du produit tÎt, puis d'assainir les parties qui comptent : permissions, séparation du stockage et retries fiables.

Enfin, décidez ce que signifie « bon » en chiffres. Fixez des seuils d'alerte avant le lancement, afin de repérer les scans bloqués et les échecs croissants avant que les utilisateurs ne s'en aperçoivent.

Facile à démarrer
Créer quelque chose d'incroyable

Expérimentez avec AppMaster avec un plan gratuit.
Lorsque vous serez prĂȘt, vous pourrez choisir l'abonnement appropriĂ©.

Démarrer
Analyse antivirus pour les téléversements de fichiers : options d'architecture pour les applications | AppMaster