Pengunggah file

Mengapa Pengunggahan Berkas Memiliki Risiko?

Sistem untuk menerima berkas dari pengguna sangat berguna, tetapi jika tidak dirancang dengan baik, dapat menjadi kerentanan yang serius. Penyerang mencoba mengeksploitasi ungahan untuk menjalankan kode arbitrer, menghabiskan kapasitas server, mendistribusikan berkas tidak sah, dan lainnya.

Ancaman utama yang dapat muncul antara lain:

  • Ungahan / Eksekusi Web Shell — Mengunggah skrip jahat untuk melakukan kontrol jarak jauh.
  • Berkas Terinfeksi Malware — Penyebaran infeksi ke pengguna lain dalam dampak sekunder.
  • Path Traversal — Penyimpanan ke lokasi yang tidak diinginkan dengan menentukan path tidak sah.
  • DoS (Bom ZIP, Berkas Berukuran Besar) — Menghabiskan storage atau pemrosesan.
  • Penyamaran Ekstensi/MIME — Pemotongan melalui ekstensi ganda seperti .jpg.php atau penyamaran Content-Type.
  • XSS Melalui Prabaca — Skrip dijalankan saat prabaca SVG/HTML.

Dasar dari perlindungan adalah "pertahanan berlapis". Merancang dengan beberapa lapisan pertahanan memberikan efektivitas daripada bergantung pada satu pertahanan saja.

Solusi: Prinsip-prinsip yang Harus Diperhatikan dalam Tahapan Desain

Pemeriksaan Ekstensi & MIME yang Ketat (Metode Daftar Putih)

Batasi ekstensi yang diizinkan, dan tidak hanya memutuskan berdasarkan ekstensi saja. Pastikan untuk memverifikasi tanda tangan berkas (magic number) untuk memeriksa isi. Jangan percayai header Content-Type dan implementasikan proses untuk mencegah metode penghindaran seperti ekstensi ganda dan NULL byte.

Pengamanan Nama Berkas & Penamaan Ulang

Jangan simpan nama berkas yang disediakan pengguna apa adanya. Gantilah dengan nama unik menggunakan UUID atau hash plus stempel waktu, dan simpan nama berkas asli sebagai metadata. Proses karakter khusus dan batas panjang juga penting.

Kontrol Lokasi Penyimpanan dan Hak Akses

Penting untuk menyimpan berkas yang diunggah di luar root web, sehingga tidak dapat dijalankan langsung. Jika memungkinkan, simpan di penyimpanan objek khusus (misalnya: S3) dan buat tautan unduh melalui aplikasi. Batasi folder penyimpanan dengan hak akses baca/tulis minimum tanpa hak eksekusi.

Pembatasan Ukuran & Kontrol Ungahan Bersamaan

Atur batas ukuran berkas, dan terapkan kontrol mengenai jumlah ungahan bersamaan serta pengaturan laju untuk memastikan ketersediaan layanan. Jika menerima berkas terkompresi (ZIP, dll.), perlu memeriksa setiap berkas setelah diekstrak.

Pemindaian Malware & Penghilangan Konten (CDR)

Segera setelah unggahan, jalankan pemindaian virus (jika mungkin dengan beberapa mesin) dan untuk PDF/Office, lakukan penghilangan melalui CDR (Content Disarm & Reconstruct). Untuk gambar, melakukan pengkodean ulang (memuat → menghasilkan berkas baru) efektif dalam menghilangkan data tidak sah yang disematkan.

HTTPS / Perlindungan Komunikasi & Tindakan CSRF

Pastikan komunikasi dilindungi dengan TLS (HTTPS) dan implementasikan tindakan seperti token CSRF. Tambahkan Content-Disposition: attachment atau X-Content-Type-Options: nosniff pada respons unduhan untuk mencegah kesalahan perilaku oleh browser.

Log, Audit & Mekanisme Peringatan

Catat dengan detail siapa yang menangani berkas dan kapan, dan atur alert untuk perilaku abnormal (unggahan frekuensi tinggi atau banyak penolakan). Menyimpan hash juga berguna untuk integritas berkas.

Pengujian Kerentanan & Pengujian Penetrasi

Setelah implementasi, lakukan pengujian kerentanan yang berfokus pada unggahan berkas (injeksi shell, penghindaran ekstensi, path traversal, dll.) dan secara berkala tinjau kembali.

Refleksi Berdasarkan UploadF

Yang akan diperkenalkan di sini adalah UploadF (uploadf.com), yang mendukung PC/Smartphone, fitur drag & drop, unggahan 100 berkas secara bersamaan, dengan keunggulan dalam kemudahan penggunaan, namun dalam desain layanan, beberapa perhatian dan inovasi perlu dipertimbangkan sebagai berikut.

Checklist Implementasi (Dari Sudut Pandang Desain Keamanan)

Item Pemeriksaan Fokus Pelaksanaan/Pemeriksaan
Pembatasan Daftar Putih Ekstensi Hanya izinkan format yang diperlukan. Gunakan daftar hitam sebagai tambahan.
Pemeriksaan MIME/Signature Verifikasi apakah ekstensi dan isi sesuai (pemeriksaan magic number).
Penamaan Ulang Berkas Ganti dengan UUID atau nama hash dan kelola nama asli sebagai metadata.
Penghapusan Karakter Khusus Penghapusan atau penolakan `/`, `\`, `..`, NULL, dll.
Direktori Penyimpanan Simpan di luar root web atau di penyimpanan objek.
Hak Folder Larangan eksekusi, hak baca/tulis minimal (prinsip hak akses paling sedikit).
Ukuran Berkas Maksimal/Miminal Jelaskan batas dan periksa setelah ekstraksi ZIP, dll.
Kontrol Ungahan Bersamaan Pembatasan jumlah paralel, kontrol laju, pengaturan timeout.
Pemindaian Virus / CDR Pemindaian segera setelah unggahan dan penghilangan jika diperlukan.
Enkripsi Komunikasi (HTTPS) Wajibkan TLS (mencegah serangan Man-in-the-Middle).
Tindakan CSRF Implementasikan pemeriksaan berbasis token.
Pengaturan Header Respons Tambahkan Content-Disposition: attachment, X-Content-Type-Options: nosniff, dll.
Pencatatan Log & Peringatan Audit tindakan unggahan dan beri notifikasi saat terjadi anomali.
Tinjauan Keamanan Berkala Lakukan pengujian kerentanan dan penetrasi secara berkala.
Penghapusan Berkas Lama Secara Otomatis Desain untuk penghapusan total setelah periode retensi berakhir.
Kontrol Akses / Otorisasi Kelola hak akses dengan ketat berdasarkan unit pengguna / grup.

Kesimpulan dan Sudut Pandang Pengguna

Fungsi pengunggahan berkas memiliki nilai guna dan risiko. Mengintegrasikan pertahanan berlapis yang dijelaskan di atas (daftar putih, pemeriksaan tanda tangan, pemisahan lokasi penyimpanan, upaya pencegahan malware, audit log, dll.) dalam desain dapat mengurangi risiko serangan secara signifikan.

Penting untuk menyampaikan kepada pengguna bahwa fungsi ini "mudah digunakan dan aman". Misalnya, layanan dengan fitur-fitur yang dapat dikelola pengguna, seperti UploadF (uploadf.com) yang memiliki penghapusan individual dan pengaturan waktu penyimpanan, dapat memberikan rasa percaya yang lebih besar.

Sumber Referensi (Beberapa)

  1. OWASP — File Upload Cheat Sheet
  2. OPSWAT — Perlindungan Ungahan Berkas / Praktik Terbaik
  3. PortSwigger — Kerentanan Ungahan Berkas
  4. SANS Institute — Panduan Ungahan Berkas yang Aman
  5. UploadF (uploadf.com) — Pengunggah Berkas (Situs Pengenalan)

※ Di atas adalah contoh sumber referensi saat artikel ditulis. Silakan periksa dokumentasi resmi masing-masing untuk informasi implementasi yang lebih rinci dan informasi ancaman terkini.


Beranda   Bantuan   Kontak   🌐Language  
©Pengunggah file