Pertimbangan dari Konten HTTP-MD5 Header

12

Kami sedang berdebat apakah akan menggunakan header Content-MD5.

Pro:

  • CMS memungkinkan kita untuk dengan mudah memasukkannya dengan overhead yang minimal (respons cache dalam 80% + kasus).
  • Itu akan menambah lapisan perlindungan terhadap masalah.

Cons:

  • Header Panjang Konten selalu ada (bahkan pada halaman yang dibuat secara dinamis) sehingga klien tidak perlu bentuk validasi lain.
  • Sejauh ini kami tidak mengetahui adanya masalah yang disebabkan oleh korupsi.
  • Pemeriksaan MD5 menambah latensi ke waktu pemuatan laman web.

Poin:

  • Apakah jenis media tertentu memasukkan bentuk intisari mereka sendiri yang membuat ini tidak perlu?
  • Jika TCP sudah menawarkan ini, mengapa itu termasuk dalam standar HTTP?
  • Apa kegunaan kehidupan nyata yang ada?
  • Apakah pemeriksaan MD5 dapat diabaikan?

Tidak ada masalah nyata untuk ini ditambahkan ke unit test dan diimplementasikan, sekitar satu jam kerja; tetapi jika itu merugikan maka kami ingin itu ditambahkan ke tes menghirup tingkat yang lebih tinggi yang digunakan dalam "pemeriksaan kesehatan" situs web.

Metalshark
sumber

Jawaban:

10

TCP sudah memiliki koreksi kesalahan, tetapi ini hanya membantu Anda pada lapisan TCP. Proxy HTTP perantara atau penyeimbang muatan dapat merusak data pada lapisan HTTP, dan kemudian mengirimkannya kembali. HTTP MD5 memungkinkan untuk mendeteksi korupsi ini. Alasan mengapa tidak ada yang benar-benar berbicara tentang kebutuhan ini adalah bahwa masalahnya memang sangat jarang; sebagian besar proxy HTTP, dll, "hanya berfungsi".

RFC menyinggung keamanan. IMHO ini sangat lemah sehingga harus diabaikan - jika Anda memerlukan keamanan dan kerahasiaan yang nyata, maka Anda memerlukan HTTPS.

Apakah jenis media tertentu memasukkan bentuk intisari mereka sendiri yang membuat ini tidak perlu?

Tidak ada yang benar-benar bagus. Tetapi beberapa kesalahan kecil dalam foto, streaming video dll akan sering tidak terlihat oleh manusia.

Saya akan mengatakan itu tergantung pada use case:

  • Untuk layanan web berbasis REST, intisari menambahkan lapisan yang berguna untuk koreksi kesalahan tambahan. Lihat kegagalan AWS ini sebagai contoh .
  • Untuk aplikasi yang berurusan dengan data misi-kritis melalui HTTP biasa, layak untuk diterapkan. Content-MD5 memberi klien opsi untuk memverifikasi integritas transmisi ujung ke ujung.
  • Untuk situs web 'normal' yang menyajikan teks dan media dengan nilai 'normal', header Content-MD5 tidak ada gunanya. Dan sejujurnya saya bahkan tidak tahu berapa banyak browser utama (PC, terutama ponsel) yang benar-benar mendukungnya.
Jesper M
sumber
1
Kasus kegagalan AWS itu benar-benar berbahaya. Ini sudah beberapa tahun, tetapi benar-benar contoh menarik dari mode kegagalan yang tidak akan pernah saya pikirkan. Sangat menarik untuk diwaspadai saat menggunakan penyimpanan data dari jarak jauh. Saya bertanya-tanya tentang beberapa solusi NoSQL dan bagaimana mereka menangani masalah seperti itu.
artlung
Ini membuatnya cukup mudah untuk memberikan keputusan kepada klien. Opsi seperti ini sekarang dapat ditawarkan sebagai "baik untuk dimiliki" tetapi bukan kriteria penting. Jika Amazon dapat menggunakan load balancer dan menyebabkan kesalahan ini, kemungkinan akan muncul di suatu tempat pada akhirnya dan tidak ada yang tampak lebih buruk daripada situs web yang tidak konsisten dan bermasalah.
Metalshark
Itu benar-benar tergantung di mana bit terbalik. Jika itu adalah bit yang paling tidak signifikan, maka itu akan menjadi tidak terlihat. Tapi ada perbedaan besar antara warna rgb(255, 0, 0)dan rgb(127, 0, 0). Dengan video mentah, satu piksel kerusakan akan kurang terlihat karena ada di layar untuk sesaat yang singkat, tetapi karena sebagian besar video online menggunakan algoritma kompresi yang sangat efisien, satu bit dibalik dapat menyebabkan setengah dari gambar rusak atau bergeser melintasi layar.
Lèse majesté
Juga, seperti yang Anda katakan, bank seharusnya hanya menggunakan HTTPS, jadi bukankah tidak ada gunanya bagi mereka untuk menggunakannya Content-MD5, karena SSL / TLS sudah menyediakan pesan intisari pada lapisan aplikasi?
Lèse majesté
1
@ Lèse majesté: Mengenai kesalahan bit, saya setuju dalam kasus abstrak. Tetapi ingat bahwa sebagian besar streaming video fx menggunakan transportasi khusus aplikasi melalui UDP atau TCP untuk memberikan tradeoff 'benar' antara koreksi kesalahan dan kecepatan - dan streaming video dengan demikian tidak akan menjadi kasus penggunaan untuk Content-MD5. Mengenai bank harus menggunakan HTTPS, saya setuju, dan saya ulangi untuk membuatnya lebih jelas.
Jesper M
1

Pemeriksaan MD5 menambah latensi ke waktu pemuatan laman web.

Jika benar (dan latensi tidak sepenuhnya sepele) maka saya akan mengatakan itu tidak sepadan.

Secara umum, saya percaya, tajuk termodifikasi terakhir paling umum digunakan untuk menentukan apakah suatu halaman telah berubah. Dengan asumsi Anda memberikan nilai yang berarti di sana, saya melihat tidak perlu untuk header content-md5.

Keris
sumber