Pipeline seguro de upload em Flask

Arquitetura de referencia para construir caminhos seguros de ingestao de arquivos em servicos Flask.

Seguranca Codigo Documento Imagem Arquivo

Separe ingestao de processamento

O handler Flask deve fazer o minimo de trabalho sincrono: autenticar, aplicar limites grossos, persistir o arquivo em object storage ou quarentena e enfileirar os jobs de processamento. Parsing pesado e conversoes devem ficar em workers, nao em threads de requisicao.

  • Sincrono: auth, verificacoes de tamanho, escrita temporaria, enfileiramento do job.
  • Assincrono: antivirus, transcodificacao de midia, OCR, extracao de metadados, indexacao.

Endureca os limites de armazenamento e execucao

Nunca confie em nomes de arquivo para caminhos de filesystem. Use IDs de objeto gerados e caminhos imutaveis de armazenamento. Mantenha workers em containers restritos, com dependencias somente leitura e acesso minimo de rede. Aplique limites de descompressao e de recursao para arquivos compactados.

Exponha uma maquina de estados clara para clientes

Uma maquina de estados visivel para uploads reduz carga de suporte e permite que clientes implementem retries e fallbacks corretamente. Isso tambem melhora a auditabilidade em revisoes de compliance.

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

Ferramentas recomendadas

Inspetor MIME

Compare extensao e assinaturas para detectar incompatibilidades de tipo.

Abrir ferramenta

Classificador MIME em lote

Classifique muitos arquivos de uma vez e destaque riscos de incompatibilidade.

Abrir ferramenta

Gerador e verificador de checksum

Calcule SHA256 e verifique a integridade do arquivo com hashes esperados.

Abrir ferramenta