Comment m’assurer qu’une image provient bien du bon utilisateur ?
Le backend de votre application doit authentifier l’utilisateur et autoriser le téléversement. Conservez l’Auth Secret Transloadit sur ce backend de confiance. Déduisez les Instructions autorisées de la session authentifiée. Signer aveuglément un identifiant utilisateur fourni par le navigateur ne le vérifie pas.
La Signature Authentication protège les octets exacts de la chaîne params sérialisée. Pour les requêtes signées ordinaires, modifier params.fields après la signature invalide celle-ci. Elle ne signe pas les champs multipart distincts ni les octets des fichiers téléversés. Un champ multipart non signé envoyé ultérieurement peut remplacer un champ signé du même nom dans les champs fusionnés de l’Assembly. Signer params.fields.user_id ne rend donc pas fiable le fields.user_id final.
Activez la Signature Authentication pour votre Workspace lorsque vous acceptez des requêtes signées provenant du navigateur. Incluez un auth.expires de courte durée et renvoyez les params sérialisés d’origine accompagnés de leur signature. L’expiration limite la fenêtre de réutilisation, mais ne garantit pas un usage unique. La création d’Assembly peut réutiliser des params signés identiques avant l’expiration, y compris des params contenant un nonce. Une requête copiée ne prouve pas que son expéditeur est toujours connecté. Une authentification par jeton porteur valide satisfait l’exigence de signature sans vérifier une éventuelle signature fournie. Protégez les jetons porteurs en fonction de leur portée.
Pour une association contrôlée par votre application, créez l’Assembly depuis votre backend de confiance et enregistrez l’assembly_id qu’elle renvoie en l’associant à l’utilisateur authentifié. Suivez le guide des téléversements avec reprise pour permettre au client de téléverser des fichiers vers cette Assembly existante, et gardez privé l’accès en téléversement à celle-ci. Il s’agit d’une intégration différente du plugin Transloadit d’Uppy, qui crée l’Assembly depuis le navigateur à l’aide de assemblyOptions.
Avant d’accorder l’accès aux résultats, vérifiez l’Assembly Status par rapport à l’enregistrement détenu par votre application. Pour les Webhooks, commencez par vérifier la signature de la livraison, puis comparez son identifiant d’Assembly à cet enregistrement. Ne déduisez pas la propriété à partir des champs renvoyés ni d’un identifiant d’Assembly revendiqué par un client. Cela enregistre le téléversement que votre application a autorisé, mais n’établit pas qui a créé l’image et ne prouve pas le contenu des octets téléversés.