Ana içeriğe geç

Header

Dosya Barındırma ve Dijital İndirmeler

BDX.market üzerindeki Dosya Barındırma ve Dijital İndirmeler Sistemi, dijital yazılım yükleyiciler, oyun istemcisi yamaları, yüksek çözünürlüklü grafik paketleri, dijital rehberler, özel oyun modları ve elektronik belgeler dahil olmak üzere seri numarası olmayan dijital varlıkların dağıtımını yönetir.

Bangladeş genelindeki kullanıcılara hızlı, güvenilir indirmeler sunarken hotlink'lemeyi ve yetkisiz dağıtımı önlemek için BDX.market, güvenli Cloudflare R2 / S3 nesne depolamayı süre sınırlı imzalı URL'ler, bant genişliği optimizasyonu ve virüs tarama doğrulamasıyla birleştirir.


1. Sistem Mimarisi ve Altyapı​

Dijital dosya teslimatı, web uygulaması sunucularını yüksek bant genişlikli varlık aktarımlarından ayıran yalıtılmış bir depolama mimarisine dayanır. Yüklenen tüm satıcı varlıkları nesne depolamadaki şifreli özel kovalarda saklanır ve yerelleştirilmiş CDN düğümleri üzerinden sunulur.

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

Teknik Öne Çıkanlar​

  1. Özel Nesne Depolama: Dosyalar katı Özel Erişim Kontrol Listeleri (ACL'ler) ile saklanır. Herkese açık doğrudan URL'ler mevcut değildir; tüm erişim kriptografik imza doğrulaması gerektirir.
  2. Uç CDN Hızlandırma: İndirme istekleri, Güney Asya trafiğine hizmet veren Cloudflare uç düğümleri üzerinden önbelleğe alınır ve yönlendirilir; Bangladeş'teki yerel geniş bant ve mobil veri bağlantılarında indirme hızı en üst düzeye çıkarılır.
  3. Parçalı Devam Edilebilir Aktarımlar: HTTP Range isteklerini destekleyerek değişken mobil ağlardaki alıcıların çok gigabaytlık dosya indirmelerini bozulmadan duraklatıp devam ettirmesini sağlar.

2. Dosya Alma, Kötü Amaçlı Yazılım Tarama ve Doğrulama​

Platform güvenliğini korumak için satıcı tarafından yüklenen tüm dosyalar, satın alınabilir veya indirilebilir olmadan önce titiz otomatik doğrulamadan geçer.

Desteklenen Dosya Biçimleri ve Dosya Boyutu Sınırları​

Varlık Türüİzin Verilen UzantılarBoyut SınırıDepolama Katmanı
Yazılım ve Yardımcılar.exe, .msi, .zip, .7z, .tar.gz5,0 GBStandart R2 Nesne Depolama
Dijital Rehberler ve Kitaplar.pdf, .epub500 MBStandart R2 Nesne Depolama
Grafik ve Sanat Paketleri.zip, .psd, .png, .svg, .rar2,0 GBStandart R2 Nesne Depolama
Oyun Modları ve Eklentiler.zip, .rar, .pak10,0 GBYüksek Kapasiteli Depolama Katmanı

Kötü Amaçlı Yazılım ve Antivirüs İnceleme Protokolü​

Bir satıcı dijital bir paket yüklediğinde:

  1. MIME ve Uzantı Doğrulaması: Sunucu, gizlenmiş çalıştırılabilir tehditleri engellemek için dosya sihirli baytlarını doğrular (örn. .pdf olarak maskelenmiş .exe).
  2. Otomatik ClamAV / VirusTotal Tarama: Dosyalar kötü amaçlı yazılım, truva atı, kripto madenci ve zararlı komut dosyaları için taranır.
  3. Karantina Durumu: Yüklenen varlıklar güvenlik onayı alınana kadar status = 'pending_scan' durumunda kalır. Güvenlik kontrollerinde başarısız olan varlıklar otomatik olarak silinir ve satıcı hesabı inceleme için işaretlenir.

3. Depolama Mimarisi: digital_file_assets​

Dijital varlıkların meta verileri, dosya sağlama toplamları ve teslimat istatistikleri digital_file_assets tablosuna kaydedilir.

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`)
);

SHA-256 ile Bütünlük Doğrulama​

sha256_checksum, yükleme tamamlandığında hesaplanır ve alıcının indirme panelinde gösterilir. Alıcılar, aktarım sırasında bozulma veya kurcalama olmadığını garanti etmek için indirilen dosyaları bu özet değerle yerel olarak doğrulayabilir.


Bağlantı paylaşımını, yetkisiz kazımayı ve bant genişliği hırsızlığını önlemek için dosya erişimi, talep üzerine oluşturulan kısa ömürlü HMAC imzalı URL'lere dayanır.

İmzalı URL Oluşturma Motoru​

Yetkili bir alıcı sipariş panelinde (/orders/{order_id}) Dosyayı İndir düğmesine tıkladığında:

  1. Uygulama sipariş durumunu (status IN ('paid', 'delivered', 'completed')) ve alıcı yetkisini kontrol eder.
  2. Sunucu tam olarak 15 dakika geçerli geçici imzalı bir Amazon S3 / Cloudflare R2 URL'si oluşturur.
  3. Yanıt, uç CDN indirme bağlantısına doğrudan bir 302 Found yönlendirmesi verir.
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,
]
);
}

İmzalı URL'ler alıcının IP adresini ve oturum jetonu imzasını içerir. Bir alıcı imzalı bağlantıyı herkese açık forumlarda veya sosyal medyada paylaşmaya çalışırsa:

  • Bağlantıya erişmeye çalışan harici kullanıcılara erişim reddedilir (403 Forbidden).
  • 15 dakika sonra bağlantının süresinin dolması, ikincil istekleri BDX kimlik doğrulamasına geri zorlar.

5. İndirme Geçmişi, Yeniden İndirmeler ve Erişim Süresi​

BDX.market, depolama yönetimini korurken net indirme hakları sunar.

Ömür Boyu Yeniden İndirme Erişimi​

Bir sipariş onaylandıktan sonra alıcılar, satın aldıkları dosya varlıklarına doğrudan Sipariş Geçmişi panellerinden sınırsız yeniden indirme erişiminin keyfini çıkarır. Bir satıcı daha sonra ürününü yayından kaldırsa bile, geçmiş alıcılar satın aldıkları sürüm için indirme izinlerini korur.

Sürümlendirme ve Satıcı Varlık Güncellemeleri​

Bir satıcı bir yazılım aracının veya dijital kitabın güncellenmiş sürümünü yayınlarsa (örn. v1.0'dan v1.2'ye):

  • Satıcı panosunda yeni bir paket revizyonu yükler.
  • Mevcut alıcılar otomatik bir bildirim alır: "Satın aldığınız varlığın güncellenmiş sürümü mevcut."
  • Sürüm geçmişi kayıtları hem orijinal hem de güncellenmiş dosyalara erişimi korur.