Menerima fail dari pengguna adalah mudah, tetapi jika tidak direka dengan betul, ia boleh menjadi kelemahan yang serius. Penyerang boleh menyalahgunakan pemuatan untuk melaksanakan kod arbitrari, menghabiskan kapasiti pelayan, dan menyebarkan fail yang tidak sah.
Ancaman utama termasuk:
Asas langkah pencegahan adalah "Pertahanan Berganda (defense in depth)". Reka bentuk yang tidak bergantung kepada satu langkah pencegahan, tetapi menggabungkan beberapa lapisan pertahanan adalah berkesan.
Hadkan sambungan yang dibenarkan, dan jangan hanya bergantung pada sambungan untuk menentukan keizinan. Periksa tandatangan fail (nombor ajaib) untuk mengesahkan isi. Jangan percayakan header Content-Type, dan laksanakan pengendalian untuk menghalang tipu daya sambungan berganda dan byte NULL.
Jangan simpan nama fail yang diberikan oleh pengguna apa adanya. Tukar kepada nama unik menggunakan UUID, hash + cap waktu, dan simpan nama asal sebagai metadata dengan cara yang selamat. Tangani juga karakter khas dan had panjang.
Pastikan fail yang dimuat naik disimpan di luar webroot, untuk mengelakkan pelaksanaan langsung. Jika boleh, simpan di penyimpanan objek khusus (contohnya: S3), dan keluarkan pautan muat turun melalui aplikasi. Hadkan folder penyimpanan kepada minimum keizinan untuk membaca dan menulis tanpa hak pelaksanaan.
Tetapkan had saiz fail, dan laksanakan bilangan pemuatan serentak serta kawalan kadar untuk memastikan kebolehcapaian perkhidmatan. Jika menerima fail terkompres (ZIP, dll.), perlu memeriksa setiap fail selepas uncompressed.
Jalankan pemindaian virus (lebih baik menggunakan beberapa enjin jika boleh) segera selepas pemuatan, dan pastikan fail PDF/Office diproses melalui CDR (Content Disarm & Reconstruct). Meng-enkod semula gambar (memuat naik → menghasilkan fail baru) adalah cara yang berkesan untuk menghilangkan data tidak sah yang disematkan.
Selalu melindungi komunikasi dengan TLS (HTTPS), dan laksanakan langkah-langkah seperti token CSRF. Tambahkan Content-Disposition: attachment
dan X-Content-Type-Options: nosniff
pada respons muat turun untuk mengelakkan kesilapan oleh pelayar.
Rekodkan dengan terperinci siapa yang mengendalikan fail pada bila-bila masa dan tetapkan amaran untuk tingkah laku tidak biasa (pemindahan yang kerap atau penolakan banyak). Menyimpan hash juga berkesan untuk integriti fail.
Selepas pelaksanaan, jalankan ujian kelemahan khusus pemuatan fail (elemen shell, penghindaran sambungan, traversal jalan, dll.) dan lakukan semak semula secara berkala.
Di sini kami memperkenalkan UploadF(uploadf.com), yang mesra PC/smartphone, drag & drop, dan membenarkan pemuatan 100 fail serentak, menunjukkan kemudahan tetapi terdapat perhatian dan inovasi yang perlu diambil kira dalam reka bentuk perkhidmatan.
Item Semakan | Poin Pelaksanaan / Pengesahan |
---|---|
Had Senarai Putih Sambungan | Benarkan hanya bentuk yang diperlukan. Senarai hitam digunakan sebagai tambahan. |
Pemeriksaan MIME / Tandatangan | Sahkan sama ada sambungan dan kandungan sepadan (semak nombor ajaib). |
Penyebutan Semula Nama Fail | Tukar kepada UUID atau nama hash dan urus nama asal sebagai metadata. |
Penghapusan Karakter Khas | Buang atau tolak `/`, `\`, `..`, NULL, dll. |
Folder Penyimpanan | Simpan di luar web root atau di penyimpanan objek. |
Keizinan Folder | Dilarang melaksanakan, hadkan kepada minimum untuk membaca dan menulis (principle of least privilege). |
Saiz Fail Maksimum / Minimum | Nyatakan had dan lakukan pemeriksaan selepas pembongkaran ZIP dan lain-lain. |
Pengawalan Pemuatan Serentak | Hadkan bilangan serentak, kawalan kadar, dan tetapkan masa tamat. |
Pemindaian Virus / CDR | Pemindaian segera selepas pemuatan dan proses penghapusan jika perlu. |
Penyulitan Komunikasi (HTTPS) | Mewajibkan TLS (menghalang serangan man-in-the-middle). |
Langkah CSRF | Implementasikan semakan berasaskan token. |
Seting Header Respons | Tambahkan Content-Disposition: attachment , X-Content-Type-Options: nosniff , dan lain-lain. |
Rekod Log & Amaran | Audit tindakan pemuatan dan berikan notifikasi untuk ketidaknormalan. |
Tinjauan Keselamatan Berkala | Melakukan ujian kelemahan dan penetrasi secara berkala. |
Penghapusan Automatik Fail Lama | Reka bentuk penghapusan sepenuhnya selepas tempoh penyimpanan tamat. |
Pengawalan Akses / Kelulusan | Urus hak akses dengan ketat berdasarkan pengguna / kumpulan. |
Fungsi pemuatan fail membawa kemudahan dan risiko. Dengan menyertakan pertahanan berganda (senarai putih, pemeriksaan tandatangan, pemisahan lokasi penyimpanan, langkah-langkah pencegahan malware, audit log, dll.) dalam reka bentuk, risiko serangan dapat dikurangkan secara signifikan.
Pengguna perlu merasakan bahawa perkhidmatan itu "mudah digunakan dan selamat". Sebagai contoh, perkhidmatan seperti UploadF(uploadf.com) yang menawarkan fungsi penghapusan individu dan penetapan tempoh simpan, lebih cenderung memberikan rasa yakin kepada pengguna.
※ Di atas adalah contoh sumber yang dirujuk semasa penulisan artikel. Sila periksa dokumen rasmi masing-masing untuk maklumat pelaksanaan yang lebih terperinci dan ancaman terkini.