Satu report.xlsx hipotetikal bersaiz 8 KB dan terbuka sebagai halaman log masuk. Program berjaya menyimpan fail, tetapi tidak pernah memperoleh hamparan yang dimaksudkan. Nama fail dipilih secara setempat; ia bukan bukti tentang apa yang tiba.

Jadikan penerimaan langkah berasingan sebelum menerbitkan muat turun sementara:

  1. Wajibkan pemindahan berjaya dan status respons yang dijangka. Kekalkan ralat dan bukannya menganggap bait yang ditulis sebelum itu sudah lengkap.
  2. Bandingkan kandungan dengan jenis artifak yang dijangka. Halaman log masuk atau penapis mungkin memulangkan 200. Content-Type mungkin salah, dan awalan HTML dalam hamparan ialah amaran yang perlu disiasat. Fail yang bermula dengan baris status HTTP sebaliknya menunjukkan pembingkaian respons mentah.
  3. Sahkan semua bait tersimpan terhadap checksum atau tandatangan yang dipercayai apabila tersedia. Aplikasi sepatutnya menerbitkan atau menggunakan fail akhir hanya selepas pemeriksaan yang diperlukan lulus.

Mengira hash tanpa nilai jangkaan hanya mengenal pasti bait yang anda terima. Checksum tanpa tandatangan yang diambil melalui laluan tidak dipercayai yang sama boleh berkongsi kelemahan artifak; gunakan jangkaan dipercayai yang bebas.

Berhati-hati juga dengan perbandingan saiz. Klien HTTP mungkin menyahkod pengekodan kandungan semasa membaca, jadi panjang fail yang terhasil boleh berbeza secara sah daripada pengepala yang menerangkan mesej yang dikodkan. Bandingkan jangkaan penerbit dengan perwakilan yang benar-benar disimpan.

Jika percubaan gagal, simpan output sementara hanya untuk menyambung semula secara sengaja atau buangkannya. Membiarkan bait tidak lengkap pada laluan akhir memaksa program seterusnya meneka sama ada ia boleh digunakan.

Artikel berkaitan