Pular para o conteúdo principal

Header

Hospedagem de arquivos e downloads digitais

O sistema de hospedagem de arquivos e downloads digitais na BDX.market gerencia a distribuição de ativos digitais não seriais, incluindo instaladores de software digital, patches de clientes de jogos, pacotes de gráficos em alta resolução, guias digitais, mods de jogos personalizados e documentos eletrônicos.

Para oferecer downloads rápidos e confiáveis a usuários em todo o Bangladesh, evitando hotlinking e distribuição não autorizada, a BDX.market combina armazenamento seguro de objetos Cloudflare R2 / S3 com URLs assinadas de validade curta, otimização de banda e validação por varredura antivírus.


1. Arquitetura do sistema e infraestrutura​

A entrega de arquivos digitais depende de uma arquitetura de armazenamento isolada que separa os servidores do aplicativo web das transferências de ativos de alta banda. Todos os ativos enviados por vendedores são armazenados em buckets privados criptografados no armazenamento de objetos e servidos via nós de CDN localizados.

+------------------+ +-------------------+ +--------------------+
| Seller File Upload| ----> | Malware / Virus | ----> | Private S3 / R2 |
| (Dashboard) | | Scanner Service | | Bucket (No Public) |
+------------------+ +-------------------+ +--------------------+
|
v
+------------------+ +-------------------+ +--------------------+
| Direct Download | <---- | Short-Lived Signed| <---- | Buyer Requests File|
| From CDN Edge | | Delivery URL | | (Verified Purchase)|
+------------------+ +-------------------+ +--------------------+

Destaques técnicos​

  1. Armazenamento privado de objetos: Os arquivos são armazenados com listas rígidas de controle de acesso privado (ACLs). URLs públicas diretas não existem; todo acesso exige verificação de assinatura criptográfica.
  2. Aceleração de CDN de borda: Solicitações de download são armazenadas em cache e roteadas por nós de borda da Cloudflare que atendem o tráfego do sul da Ásia, maximizando a taxa de download em conexões locais de banda larga e dados móveis em Bangladesh.
  3. Transferências retomáveis em partes: Suporte a solicitações HTTP Range, permitindo que compradores em redes móveis variáveis pausem e retomem downloads de arquivos de vários gigabytes sem corrupção.

2. Entrada de arquivos, varredura de malware e validação​

Para manter a segurança da plataforma, todos os arquivos enviados por vendedores passam por validação automatizada rigorosa antes de ficarem disponíveis para compra ou download.

Formatos de arquivo aceitos e limites de tamanho​

Tipo de ativoExtensões permitidasLimite de tamanhoCamada de armazenamento
Software e utilitários.exe, .msi, .zip, .7z, .tar.gz5,0 GBArmazenamento padrão de objetos R2
Guias e livros digitais.pdf, .epub500 MBArmazenamento padrão de objetos R2
Pacotes de gráficos e arte.zip, .psd, .png, .svg, .rar2,0 GBArmazenamento padrão de objetos R2
Mods e complementos de jogos.zip, .rar, .pak10,0 GBCamada de armazenamento de alta capacidade

Protocolo de inspeção de malware e antivírus​

Quando um vendedor envia um pacote digital:

  1. Validação de MIME e extensão: O servidor verifica os bytes mágicos do arquivo para bloquear ameaças executáveis disfarçadas (por ex., .exe mascarado como .pdf).
  2. Varredura automatizada ClamAV / VirusTotal: Os arquivos são verificados contra malware, trojans, criptomineradores e scripts maliciosos.
  3. Estado de quarentena: Ativos enviados permanecem em status = 'pending_scan' até obter liberação de segurança. Ativos reprovados nas verificações de segurança são eliminados automaticamente, e a conta do vendedor é sinalizada para revisão.

3. Arquitetura de armazenamento: digital_file_assets​

Metadados de ativos digitais, checksums de arquivos e estatísticas de entrega são registrados na tabela digital_file_assets.

CREATE TABLE `digital_file_assets` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`uuid` CHAR(36) NOT NULL UNIQUE,
`offer_id` BIGINT UNSIGNED NOT NULL,
`seller_id` BIGINT UNSIGNED NOT NULL,
`original_name` VARCHAR(255) NOT NULL,
`storage_path` VARCHAR(255) NOT NULL,
`mime_type` VARCHAR(255) NOT NULL,
`file_size_bytes` BIGINT UNSIGNED NOT NULL,
`sha256_checksum` CHAR(64) NOT NULL,
`scan_status` ENUM('pending', 'passed', 'failed') NOT NULL DEFAULT 'pending',
`download_count` INT UNSIGNED NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NULL,
`updated_at` TIMESTAMP NULL,
FOREIGN KEY (`offer_id`) REFERENCES `seller_offers` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`seller_id`) REFERENCES `users` (`id`)
);

Verificação de integridade via SHA-256​

O sha256_checksum é calculado ao concluir o envio e exibido no painel de download do comprador. Os compradores podem verificar localmente os arquivos baixados contra esse hash para garantir zero corrupção ou adulteração durante a transmissão.


Para evitar compartilhamento de links, raspagem não autorizada e roubo de banda, o acesso a arquivos depende de URLs curtas assinadas por HMAC, geradas sob demanda.

Mecanismo de geração de URL assinada​

Quando um comprador autorizado clica em Baixar arquivo dentro do painel do pedido (/orders/{order_id}):

  1. O aplicativo verifica o estado do pedido (status IN ('paid', 'delivered', 'completed')) e a autorização do comprador.
  2. O servidor constrói uma URL temporária assinada do Amazon S3 / Cloudflare R2 válida por exatamente 15 minutos.
  3. A resposta emite um redirecionamento 302 Found diretamente para o link de download do CDN de borda.
use Illuminate\Support\Facades\Storage;

public function generateDownloadUrl(DigitalFileAsset $file, User $buyer): string
{
// Verify buyer owns active order for this file asset
$hasValidOrder = BdxOrder::where('buyer_id', $buyer->id)
->where('offer_id', $file->offer_id)
->whereIn('status', ['paid', 'delivered', 'completed'])
->exists();

if (!$hasValidOrder) {
abort(403, 'Unauthorized access to digital download.');
}

// Generate temporary 15-minute signed S3/R2 URL
return Storage::disk('r2_private')->temporaryUrl(
$file->storage_path,
now()->addMinutes(15),
[
'ResponseContentDisposition' => 'attachment; filename="' . $file->original_name . '"',
'ResponseContentType' => $file->mime_type,
]
);
}

As URLs assinadas incorporam o endereço IP do comprador e a assinatura do token de sessão. Se um comprador tentar publicar um link assinado em fóruns públicos ou redes sociais:

  • Usuários externos que tentarem acessar o link terão o acesso negado (403 Forbidden).
  • A expiração do link após 15 minutos força novas solicitações pela autenticação da BDX.

5. Histórico de downloads, novos downloads e expiração de acesso​

A BDX.market oferece direitos claros de download mantendo a governança de armazenamento.

Acesso vitalício a novos downloads​

Assim que um pedido é confirmado, os compradores têm acesso ilimitado a novos downloads dos arquivos comprados diretamente no painel de histórico de pedidos. Mesmo que o vendedor despublique o anúncio depois, compradores históricos mantêm as permissões de download da versão adquirida.

Versionamento e atualizações de ativos do vendedor​

Se um vendedor lançar uma versão atualizada de uma ferramenta de software ou livro digital (por ex., v1.0 para v1.2):

  • O vendedor envia uma nova revisão do pacote no painel.
  • Compradores existentes recebem uma notificação automatizada: "Há uma versão atualizada do seu ativo adquirido disponível."
  • Os registros de histórico de versões mantêm acesso aos arquivos originais e atualizados.