report.xlsx สมมติมีขนาด 8 KB และเปิดเป็นหน้าล็อกอิน โปรแกรมบันทึกไฟล์สำเร็จ แต่ไม่เคยได้สเปรดชีตที่ตั้งใจไว้ ชื่อไฟล์ถูกเลือกในเครื่อง มันไม่ใช่หลักฐานว่าอะไรมาถึง

ทำให้การยอมรับเป็นขั้นตอนแยกก่อนเผยแพร่การดาวน์โหลดชั่วคราว:

  1. กำหนดให้การถ่ายโอนสำเร็จและสถานะการตอบกลับตามที่คาดหวัง เก็บข้อผิดพลาดไว้แทนที่จะถือว่าไบต์ที่เขียนก่อนหน้านั้นสมบูรณ์
  2. เปรียบเทียบเนื้อหากับชนิดไฟล์ที่คาดหวัง หน้าล็อกอินหรือหน้ากรองอาจส่งคืน 200 Content-Type อาจผิด และคำนำหน้า HTML ในสเปรดชีตเป็นคำเตือนที่ต้องสอบสวน ไฟล์ที่เริ่มด้วยบรรทัดสถานะ HTTPกลับชี้ไปที่การจัดกรอบการตอบกลับดิบ
  3. ตรวจสอบไบต์ที่บันทึกไว้ทั้งหมดกับเช็กซัมหรือลายเซ็นที่เชื่อถือได้เมื่อมี แอปพลิเคชันควรเผยแพร่หรือใช้ไฟล์สุดท้ายหลังจากผ่านการตรวจสอบที่จำเป็นแล้วเท่านั้น

การคำนวณแฮชโดยไม่มีค่าที่คาดหวังจะระบุได้เฉพาะไบต์ที่คุณได้รับ เช็กซัมที่ไม่ได้ลงนามซึ่งดึงมาผ่านเส้นทางที่ไม่น่าเชื่อถือเดียวกันอาจมีจุดอ่อนเดียวกับไฟล์ ใช้ความคาดหวังที่เชื่อถือได้และเป็นอิสระ

ระวังการเปรียบเทียบขนาดด้วย ไคลเอนต์ HTTP อาจถอดรหัสการเข้ารหัสเนื้อหาระหว่างอ่าน ดังนั้นความยาวไฟล์ที่ได้อาจต่างจากส่วนหัวที่อธิบายข้อความที่เข้ารหัสอย่างชอบธรรม เปรียบเทียบความคาดหวังของผู้เผยแพร่กับตัวแทนที่บันทึกไว้จริง

หากความพยายามล้มเหลว ให้เก็บผลลัพธ์ชั่วคราวไว้เพื่อการเริ่มใหม่โดยเจตนาเท่านั้น หรือทิ้งไป การทิ้งไบต์ที่ไม่สมบูรณ์ไว้ในเส้นทางสุดท้ายบังคับให้โปรแกรมถัดไปต้องเดาว่าใช้งานได้หรือไม่

บทความที่เกี่ยวข้อง