Como posso garantir que uma imagem realmente veio do meu usuário correto?
O backend da sua aplicação precisa autenticar o usuário e autorizar o upload. Mantenha o Auth Secret da Transloadit nesse backend confiável. Derive as Instructions permitidas da sessão autenticada; assinar cegamente um ID de usuário fornecido pelo navegador não o verifica.
A Signature Authentication protege os bytes exatos da string params serializada. Em requisições assinadas comuns, alterar params.fields depois da assinatura invalida a assinatura. Ela não assina campos multipart separados nem os bytes dos arquivos enviados. Um campo multipart não assinado enviado depois pode substituir um campo assinado de mesmo nome nos campos mesclados da Assembly, então assinar params.fields.user_id não torna confiável o fields.user_id final.
Ative a Signature Authentication no seu Workspace ao aceitar requisições assinadas vindas do navegador. Inclua um auth.expires de curta duração e retorne os params serializados originais junto com a respectiva assinatura. A expiração limita a janela de reutilização; ela não garante uso único. A criação de uma Assembly pode reutilizar params assinados idênticos antes da expiração, inclusive params com um nonce. Uma requisição copiada não prova que quem a enviou ainda está logado. Uma autenticação Bearer válida satisfaz o requisito de assinatura sem verificar uma assinatura fornecida; proteja os tokens Bearer de acordo com o escopo deles.
Para uma associação controlada pela sua aplicação, crie a Assembly a partir do seu backend confiável e registre o assembly_id retornado junto com o usuário autenticado. Siga o guia de uploads retomáveis para permitir que o cliente envie arquivos para essa Assembly existente e mantenha privado o acesso de upload dela. Essa integração é diferente do plugin Transloadit do Uppy, que cria a Assembly a partir do navegador usando assemblyOptions.
Antes de conceder acesso aos resultados, compare o Assembly Status com o registro mantido pela sua aplicação. Para webhooks, primeiro verifique a assinatura da entrega e depois compare o Assembly ID dela com esse registro. Não derive a propriedade a partir de campos retornados nem de um Assembly ID informado por um cliente. Isso registra o upload que sua aplicação autorizou; não estabelece quem criou a imagem nem prova o conteúdo dos bytes enviados.