Lewati ke konten utama

Mengamankan Download File Berbayar: Pola yang Kami Pakai di Produksi

Mustaf

16 Agustus 2026

1 menit baca · 557 kali dibaca
Mengamankan Download File Berbayar: Pola yang Kami Pakai di Produksi

Kesalahan paling umum pada marketplace digital pemula: menyimpan file produk di public/storage. Satu URL bocor ke grup Telegram dan produk Anda tersebar.

Tiga lapis yang wajib ada

1. File tidak pernah berada di document root

Simpan di disk privat, di luar folder public/. Tidak ada konfigurasi web server yang bisa salah dan membocorkannya.

'products' => [
    'driver' => 'local',
    'root' => storage_path('app/private/products'),
    'serve' => false,
],

2. Link berumur pendek, bukan permanen

Jangan berikan URL tetap. Terbitkan signed URL yang kedaluwarsa dalam hitungan menit, dibuat saat pengguna menekan tombol download.

URL::temporarySignedRoute(
    'customer.downloads.file',
    now()->addMinutes(60),
    ['download' => $download->id, 'file' => $file->id],
);

3. Otorisasi diperiksa ulang saat file diambil

Signed URL hanya membuktikan link itu kita yang buat, bukan bahwa pemegangnya masih berhak. Periksa ulang kepemilikan, kuota, dan masa berlaku di controller — dan naikkan penghitung di dalam transaksi dengan lockForUpdate agar dua permintaan paralel tidak sama-sama lolos pada slot kuota terakhir.

Jangan lupa audit trail

Catat setiap unduhan: waktu, IP, user agent, file mana. Ketika suatu saat ada dugaan penyalahgunaan lisensi, log ini yang akan menjawabnya.

#keamanan #laravel #download

Butuh implementasinya di bisnis Anda?

Kami bantu dari analisa sampai deployment.

Request Project