Uwagi dotyczące nagłówka HTTP Content-MD5

12

Zastanawiamy się, czy użyć nagłówka Content-MD5.

Plusy:

  • CMS pozwala nam łatwo dołączyć go z minimalnym narzutem (odpowiedzi buforowane w ponad 80% przypadków).
  • Dałoby to kolejną warstwę ochrony przed problemami.

Cons:

  • Nagłówek Content-Length jest zawsze obecny (nawet na dynamicznie tworzonych stronach), więc klient nie powinien potrzebować innej formy sprawdzania poprawności.
  • Jak dotąd nie jesteśmy świadomi żadnych problemów spowodowanych przez korupcję.
  • Kontrole MD5 zwiększają opóźnienia w czasie ładowania strony internetowej.

Zwrotnica:

  • Czy niektóre typy mediów zawierają własną formę podsumowania, która czyni to niepotrzebnym?
  • Jeśli TCP już to oferuje, to dlaczego został włączony do standardu HTTP?
  • Jakie są rzeczywiste zastosowania?
  • Czy sprawdzenie MD5 jest nieistotne?

To nie jest prawdziwy problem, aby dodać to do testów jednostkowych i wdrożyć, około godziny pracy; jeśli jednak jest to szkodliwe, chcemy, aby zostało dodane do testów wąchania wyższego poziomu używanych w „kontroli stanu” witryny.

Metalshark
źródło

Odpowiedzi:

10

TCP ma już korekcję błędów, ale pomaga to tylko w warstwie TCP. Pośredni serwer proxy HTTP lub moduł równoważenia obciążenia może uszkodzić dane w warstwie HTTP, a następnie przesłać je ponownie. HTTP MD5 umożliwia wykrycie tego uszkodzenia. Powodem, dla którego tak naprawdę nikt nie mówi o tej potrzebie, jest to, że problem jest naprawdę bardzo rzadki; większość serwerów proxy HTTP itp. „po prostu działa”.

RFC odnoszą się do bezpieczeństwa. IMHO jest tak słaby, że należy go zignorować - jeśli potrzebujesz jakiegokolwiek prawdziwego bezpieczeństwa i poufności, potrzebujesz HTTPS.

Czy niektóre typy mediów zawierają własną formę podsumowania, która czyni to niepotrzebnym?

Nic naprawdę dobrego. Ale kilka błędów na zdjęciach, streamingu wideo itp. Będzie często niezauważalnych dla ludzi.

Powiedziałbym, że zależy to od przypadku użycia:

  • W przypadku usług internetowych opartych na REST podsumowanie dodaje przydatną warstwę dodatkowej korekcji błędów. Zobacz tę awarię AWS jako przykład .
  • W przypadku aplikacji obsługujących dane o znaczeniu krytycznym przez zwykły HTTP warto je wdrożyć. Content-MD5 daje klientom opcję weryfikacji integralności transmisji od końca do końca.
  • W przypadku „normalnych” witryn internetowych obsługujących tekst i media o „normalnej” wartości nagłówek Content-MD5 nie ma żadnego sensu. I szczerze mówiąc, nawet nie wiem, ile przeglądarek głównego nurtu (na PC, zwłaszcza na urządzeniach mobilnych) faktycznie to obsługuje.
Jesper M.
źródło
1
Ta awaria AWS jest naprawdę podstępna. Ma kilka lat, ale naprawdę fascynujący przykład trybu awarii, o którym nigdy bym nie pomyślał. Bardzo interesujący, na który należy zwrócić uwagę podczas zdalnego przechowywania danych. Zastanawiam się nad niektórymi rozwiązaniami NoSQL i jak radzą sobie z takimi problemami.
artlung
Ułatwia to przekazanie decyzji klientowi. Taka opcja może być teraz oferowana jako „miło mieć”, ale nie jako podstawowe kryterium. Jeśli Amazon może wdrożyć moduł równoważenia obciążenia i spowodować te błędy, prawdopodobnie w końcu gdzieś się pojawi i nic nie wygląda gorzej niż niekonsekwentnie kłopotliwa strona internetowa.
Metalshark,
To naprawdę zależy od tego, gdzie znajduje się odwrócony bit. Jeśli jest to najmniej znaczący kawałek, będzie niezauważalny. Ale istnieje ogromna różnica między kolorami rgb(255, 0, 0)a rgb(127, 0, 0). W przypadku surowego wideo uszkodzenie jednego piksela będzie mniej zauważalne, ponieważ jest wyświetlane na ekranie przez tak krótki moment, ale ponieważ większość filmów online używa wysoce wydajnych algorytmów kompresji, odwrócenie jednego bitu może spowodować uszkodzenie lub przesunięcie połowy obrazu ekran.
Lèse majesté
Ponadto, jak powiedziałeś, banki powinny po prostu używać HTTPS, więc czy nie ma sensu, aby z nich korzystały Content-MD5, skoro SSL / TLS zapewnia już skrót wiadomości w warstwie aplikacji?
Lèse majesté
1
@ Lèse majesté: Jeśli chodzi o błędy bitów, zgadzam się w przypadku abstrakcyjnym. Pamiętaj jednak, że większość transmisji strumieniowych wideo wykorzystuje transport specyficzny dla aplikacji przez UDP lub TCP, aby zapewnić „właściwy” kompromis między korektą błędów a prędkością - a przesyłanie strumieniowe wideo nie byłoby przypadkiem zastosowania dla Content-MD5. Jeśli chodzi o banki, powinny korzystać z HTTPS, zgadzam się i zmieniam sformułowania, aby było bardziej jasne.
Jesper M
1

Kontrole MD5 zwiększają opóźnienia w czasie ładowania strony internetowej.

Jeśli to prawda (a opóźnienie nie jest całkowicie trywialne), powiedziałbym, że nie było tego warte.

Ogólnie uważam, że ostatni zmodyfikowany nagłówek jest najczęściej używany do ustalenia, czy strona się zmieniła. Zakładając, że podasz tam znaczącą wartość, nie widzę potrzeby nagłówka content-md5.

Kris
źródło