Lewati ke konten utama

Header

Hosting Berkas & Unduhan Digital

Sistem Hosting Berkas & Unduhan Digital di BDX.market mengelola distribusi aset digital non-serial, termasuk penginstal perangkat lunak digital, patch klien game, bundel grafis resolusi tinggi, panduan digital, mod game kustom, dan dokumen elektronik.

Untuk menyediakan unduhan yang cepat dan andal bagi pengguna di seluruh Bangladesh sekaligus mencegah hotlinking dan distribusi tidak sah, BDX.market menggabungkan penyimpanan objek R2 / S3 Cloudflare yang aman dengan URL bertanda tangan yang kedaluwarsa, optimalisasi bandwidth, dan validasi pemindaian virus.


1. Arsitektur Sistem & Infrastruktur​

Pengiriman berkas digital bergantung pada arsitektur penyimpanan terisolasi yang memisahkan server aplikasi web dari transfer aset berbandwidth tinggi. Semua aset penjual yang diunggah disimpan dalam bucket pribadi terenkripsi pada penyimpanan objek dan disajikan melalui node CDN lokal.

+------------------+ +-------------------+ +--------------------+
| 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)|
+------------------+ +-------------------+ +--------------------+

Sorotan Teknis​

  1. Penyimpanan Objek Pribadi: Berkas disimpan dengan Daftar Kontrol Akses (ACL) Privat yang ketat. URL langsung publik tidak ada; semua akses membutuhkan verifikasi tanda tangan kriptografis.
  2. Akselerasi CDN Tepi: Permintaan unduhan di-cache dan dirutekan melalui node tepi Cloudflare yang melayani lalu lintas Asia Selatan, memaksimalkan throughput unduhan pada koneksi broadband lokal dan data seluler di Bangladesh.
  3. Transfer Terpotong yang Dapat Dilanjutkan: Mendukung permintaan HTTP Range, memungkinkan pembeli di jaringan seluler yang bervariasi untuk menjeda dan melanjutkan unduhan berkas multi-gigabyte tanpa kerusakan.

2. Pengisian Berkas, Pemindaian Malware & Validasi​

Untuk menjaga keamanan platform, semua berkas yang diunggah penjual menjalani validasi otomatis yang ketat sebelum tersedia untuk pembelian atau unduhan.

Format Berkas yang Didukung & Batas Ukuran Berkas​

Jenis AsetEkstensi yang DiizinkanBatas UkuranTingkat Penyimpanan
Perangkat Lunak & Utilitas.exe, .msi, .zip, .7z, .tar.gz5,0 GBPenyimpanan Objek R2 Standar
Panduan & Buku Digital.pdf, .epub500 MBPenyimpanan Objek R2 Standar
Paket Grafis & Seni.zip, .psd, .png, .svg, .rar2,0 GBPenyimpanan Objek R2 Standar
Mod & Addon Game.zip, .rar, .pak10,0 GBTingkat Penyimpanan Kapasitas Tinggi

Protokol Pemeriksaan Malware & Antivirus​

Saat penjual mengunggah paket digital:

  1. Validasi MIME & Ekstensi: Server memverifikasi byte ajaib berkas untuk memblokir ancaman eksekutabel yang disamarkan (misalnya .exe yang disamarkan sebagai .pdf).
  2. Pemindaian Otomatis ClamAV / VirusTotal: Berkas dipindai untuk malware, trojan, cryptominer, dan skrip berbahaya.
  3. Status Karantina: Aset yang diunggah tetap dalam status = 'pending_scan' hingga izin keamanan tercapai. Aset yang gagal pemeriksaan keamanan secara otomatis dihapus, dan akun penjual ditandai untuk ditinjau.

3. Arsitektur Penyimpanan: digital_file_assets​

Metadata untuk aset digital, checksum berkas, dan statistik pengiriman dicatat dalam tabel 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`)
);

Verifikasi Integritas melalui SHA-256​

sha256_checksum dihitung setelah pengunggahan selesai dan ditampilkan di panel unduhan pembeli. Pembeli dapat memverifikasi berkas yang diunduh secara lokal terhadap hash ini untuk memastikan tidak ada kerusakan atau manipulasi selama transmisi.


Untuk mencegah berbagi tautan, scraping tidak sah, dan pencurian bandwidth, akses berkas bergantung pada URL bertanda tangan HMAC berumur pendek yang dibuat sesuai permintaan.

Mesin Pembuatan URL Bertanda Tangan​

Saat pembeli yang berwenang mengklik Download File di dalam panel pesanan mereka (/orders/{order_id}):

  1. Aplikasi memeriksa status pesanan (status IN ('paid', 'delivered', 'completed')) dan otorisasi pembeli.
  2. Server membangun URL S3 / Cloudflare R2 bertanda tangan sementara yang valid tepat selama 15 menit.
  3. Respons menerbitkan pengalihan 302 Found langsung ke tautan unduhan CDN tepi.
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,
]
);
}

URL bertanda tangan menggabungkan alamat IP pembeli dan tanda tangan token sesi. Jika pembeli mencoba memposting tautan bertanda tangan di forum publik atau media sosial:

  • Pengguna eksternal yang mencoba mengakses tautan ditolak aksesnya (403 Forbidden).
  • Kedaluwarsa tautan setelah 15 menit memaksa permintaan sekunder kembali melalui autentikasi BDX.

5. Riwayat Unduhan, Unduhan Ulang & Kedaluwarsa Akses​

BDX.market menyediakan hak unduhan yang jelas sekaligus menjaga tata kelola penyimpanan.

Akses Unduhan Ulang Seumur Hidup​

Setelah pesanan dikonfirmasi, pembeli menikmati akses unduhan ulang tanpa batas ke aset berkas yang dibeli langsung dari panel Riwayat Pesanan mereka. Bahkan jika penjual kemudian membatalkan publikasi daftar produknya, pembeli historis tetap memiliki izin unduhan untuk versi yang mereka beli.

Pembuatan Versi & Pembaruan Aset Penjual​

Jika penjual merilis versi terbaru dari alat perangkat lunak atau buku digital (misalnya v1.0 ke v1.2):

  • Penjual mengunggah revisi paket baru di dasbor mereka.
  • Pembeli yang ada menerima notifikasi otomatis: "An updated version of your purchased asset is available."
  • Log riwayat versi menjaga akses ke berkas asli maupun yang diperbarui.