Розгляд заголовка вмісту HTTP-MD5


12

Ми обговорюємо, чи використовувати заголовок Content-MD5.

Плюси:

  • CMS дозволяє нам легко включити його з мінімальними накладними витратами (кешовані відповіді в 80% + випадків).
  • Це додало б ще один рівень захисту від проблем.

Мінуси:

  • Заголовок "Довжина вмісту" завжди присутній (навіть на динамічно створених сторінках), тому клієнту не потрібна інша форма перевірки.
  • Поки ми не знаємо жодних проблем, спричинених корупцією.
  • Перевірки MD5 додають затримку до часу завантаження веб-сторінки.

Бали:

  • Чи включають певні типи засобів масової інформації власну форму дайджесту, яка робить це непотрібним?
  • Якщо TCP пропонує це вже, чому він був включений у стандарт HTTP?
  • Які існують у реальному використанні?
  • Чи перевірка MD5 незначна?

Це не є реальною проблемою для додавання до одиничних випробувань та впровадження протягом години; однак, якщо це згубно, ми хочемо, щоб його додали до випробувань нюху вищого рівня, що використовуються на веб-сайті "перевірка здоров'я".

Відповіді:


10

TCP вже має виправлення помилок, але це допомагає лише на шарі TCP. Проміжний HTTP-проксі або балансир завантаження може пошкодити дані на рівні HTTP, а потім повторно передати їх. HTTP MD5 дозволяє виявити цю пошкодження. Причина, чому насправді ніхто не говорить про цю потребу, полягає в тому, що проблема справді дуже рідкісна; більшість HTTP-проксі тощо "просто працюють".

RFC натякають на безпеку. IMHO це настільки слабко, що його слід ігнорувати - якщо вам потрібна реальна безпека та конфіденційність, тоді вам потрібен HTTPS.

Чи включають певні типи засобів масової інформації власну форму дайджесту, яка робить це непотрібним?

Нічого насправді хорошого. Але кілька помилок у фотографіях, потоковому відео і т. Д. Часто будуть непомітні для людей.

Я б сказав, що це залежить від випадку використання:

  • Для веб-служб на основі REST дайджест додає корисний шар додаткового виправлення помилок. Дивіться цей збій AWS як приклад .
  • Для додатків, що займаються критично важливими даними через звичайний HTTP, його варто застосувати. Content-MD5 надає клієнтам можливість перевірити цілісність передачі від кінця до кінця.
  • Для "звичайних" веб-сайтів, що розміщують текст та носії інформації "нормального" значення, заголовок Content-MD5 не виконує жодних цілей. І я, чесно кажучи, навіть не знаю, скільки основних браузерів (ПК, особливо мобільних) насправді підтримують.

1
Цей випадок відмови AWS насправді підступний. Це кілька років, але насправді захоплюючий приклад режиму відмови я ніколи б не подумав. Дуже цікавий, на який слід звернути увагу при віддаленому зберіганні даних. Мені цікаво про деякі рішення NoSQL та про те, як вони вирішують такі проблеми.
artlung

Це дозволяє досить просто передати рішення клієнту. Такий варіант тепер може бути запропонований як "приємно мати", але не є істотним критерієм. Якщо Amazon може розгорнути балансир завантаження і викликати ці помилки, він, швидше за все, з'явиться десь в кінцевому підсумку, і нічого не буде гірше, ніж непослідовно проблемний веб-сайт.
Metalshark

Це дійсно залежить від того, де знаходиться перевернутий біт. Якщо це найменш значущий біт, то він буде непомітний. Але є величезна різниця між кольорами rgb(255, 0, 0)та rgb(127, 0, 0). З нераціональним відео пошкодження одного пікселя буде менш помітним, оскільки воно настільки короткий момент виводиться на екран, але оскільки більшість відео в Інтернеті використовують високоефективні алгоритми стиснення, один біт, який перевернуто, може призвести до пошкодження або переміщення половини зображення поперек екран.
Lèse majesté

Крім того, як ви вже говорили, банки повинні просто використовувати HTTPS, тож чи не має сенсу використовувати їх Content-MD5також, оскільки SSL / TLS вже надає дайджест повідомлень на рівні програми?
Lèse majesté

1
@ Lèse majesté: Щодо бітових помилок, я погоджуюсь у абстрактному випадку. Але пам’ятайте, що більшість потокових відео fx використовує специфічний для транспорту транспорт через UDP або TCP, щоб надати «правильний» компроміс між виправленням помилок та швидкістю - і потокове відео, таким чином, не буде випадком використання для Content-MD5. Щодо банків, які повинні використовувати HTTPS, я згоден, і я перефразую, щоб зробити це більш зрозумілим.
Jesper M

1

Перевірки MD5 додають затримку до часу завантаження веб-сторінки.

Якщо правда (а затримка не зовсім тривіальна), то я б сказав, що цього не варто.

Взагалі, я вважаю, останній змінений заголовок найчастіше використовується для визначення того, чи змінилась сторінка. Якщо припустити, що ви надаєте значущі значення там, я не бачу потреби в заголовку content-md5.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.