Keamanan upload file: jenis, penyimpanan, dan akses
Pengamanan upload tidak selesai dengan memeriksa ekstensi. Tim perlu mengatur siapa yang boleh mengunggah, cara berkas diproses, tempat menyimpan, dan siapa yang dapat membacanya.
Di halaman ini
Apa saja yang harus dilindungi?
Fitur upload menerima berkas yang belum dapat dipercaya, lalu menyimpannya atau memprosesnya. Risiko dapat muncul pada parser, ruang penyimpanan, pratinjau, maupun tautan unduhan yang dapat dibuka orang lain.
Ekstensi dan Content-Type dari pengirim bukan bukti bahwa isi berkas sesuai. Pemeriksaan jenis, isi, akses, serta batas sumber daya perlu bekerja bersama.
Contoh: dokumen dukungan pelanggan
Aplikasi fiktif menerima lampiran untuk tiket dukungan. Tim hanya membutuhkan PDF dan gambar, bukan semua format. Lampiran harus dapat dibaca pemilik tiket dan petugas yang berwenang.
Alur yang disepakati: pengguna terverifikasi mengunggah → berkas masuk penyimpanan terpisah → pemeriksaan selesai → pengguna yang berhak dapat mengunduh. Berkas yang masih menunggu pemeriksaan tidak disajikan sebagai lampiran siap buka. Kegagalan pemindai ditangani sebagai keadaan tertunda atau gagal, bukan lolos otomatis.
Pemeriksaan dari masuk sampai dihapus
- Jenis dan ukuran: izinkan format yang dibutuhkan; cocokkan ekstensi, hasil identifikasi jenis, serta isi yang relevan. Batasi ukuran dan jumlah unggahan.
- Nama: gunakan identitas penyimpanan buatan aplikasi. Nama asli dapat menjadi metadata yang ditampilkan dengan aman, bukan penentu lokasi berkas.
- Pemrosesan: pakai pustaka yang diperbarui, hak terbatas, dan batas waktu/memori. Arsip memerlukan perhatian pada ukuran setelah diekstrak.
- Penyimpanan: pisahkan dari lokasi kode yang dapat dijalankan; hindari akses publik jika berkas bersifat privat.
- Pengambilan: periksa izin lagi pada pratinjau dan unduhan. Nama acak atau URL yang sulit ditebak bukan pengganti otorisasi.
- Penghapusan: tetapkan masa simpan sesuai tujuan dan hubungkan dengan proses penghapusan data yang berlaku.
Pemindaian malware dapat menjadi lapisan tambahan, tetapi hasil bersih bukan jaminan semua ancaman tersaring. Jangan mengirim dokumen pelanggan ke layanan pemindaian publik tanpa menilai pengungkapan datanya.
Contoh kriteria penerimaan
| Kasus pada berkas buatan | Hasil yang diharapkan |
|---|---|
| Format yang diizinkan dan ukuran sesuai | Dapat diproses setelah pemeriksaan yang disyaratkan |
| Ekstensi cocok tetapi jenis isi tidak sesuai | Ditolak atau dikarantina menurut aturan |
| Pelanggan lain mengetahui ID berkas | Tetap tidak dapat membaca atau mengganti lampiran |
| Pemrosesan gagal atau melewati batas | Tidak menjadi berkas publik; pengguna mendapat status yang jelas |
Catat identitas kasus uji, keputusan, dan batas pemeriksaan tanpa menyimpan dokumen sensitif di tiket umum. Uji juga alur pratinjau; mengamankan unduhan saja belum mencakup semua pemrosesan.
Hubungkan dengan kontrol lain
Periksa XSS untuk nama dan konten yang ditampilkan, CSRF untuk unggahan berbasis sesi cookie, dan pemisahan data pelanggan untuk akses lampiran.
Sumber rujukan
- File Upload Cheat Sheet ↗OWASP Foundation; panduan teknis keamanan aplikasi · File Upload Protection; Content-Type Validation; Filename Safety; Storage Location; User Permissions
Baca naskah lengkap untuk melihat syarat dan pengecualiannya. Sesuaikan dengan layanan dan bidang usaha Anda.
Perlu membahas kebutuhan tim Anda?
Ceritakan sistem yang dikelola dan kebutuhan pengamanan tim Anda.
Konsultasikan kebutuhan Anda