2015-08-11 15 views
191

zrobiłem post żądanie do protokołu HTTP (non-HTTPS) stronie, kontrolowane żądania w Chrome Developer Tools, a okazało się, że to dodaje swój własny nagłówek przed wysłaniem go do serwera:Co to jest nagłówek HTTP "Upgrade-Insecure-Requests"?

Upgrade-Insecure-Requests: 1 

po wykonaniu szukaj w Upgrade-Insecure-Requests, mogę tylko znaleźć information temat serwera wysyłającego this nagłówka:

Content-Security-Policy: upgrade-insecure-requests 

ten wydaje się mieć związek, ale nadal bardzo różne, ponieważ w moim przypadku, klient wysyła nagłówek w Zamówienie, wherea s wszystkie informacje jakie znalazłem dotyczą SERWERA wysyłającego odpowiedni nagłówek w odpowiedzi Response.


Więc dlaczego Chrome (44.0.2403.130 m) dodanie Upgrade-Insecure-Requests na moją prośbę i co to robi?


Aktualizacja 24.08.2016:

Ten nagłówek został już dodany jako W3C Candidate Recommendation i jest teraz oficjalnie uznane.

Dla tych, którzy właśnie natknęli się na to pytanie i są zdezorientowani, excellent answer Simona Easta wyjaśnia to dobrze.

The Upgrade-Insecure-Requests: 1 nagłówek używany będzie HTTPS: 1in the previous W3C Working Draft i został przemianowany cicho Chrome, zanim został oficjalnie przyjęty zmiana.

(To pytanie zadano w okresie przejściowym, kiedy nie było oficjalnej dokumentacji na ten cel i Chrome był jedyną przeglądarką, która wysłała ten nagłówek.)

+1

Firefox robi to zbyt. – dakab

+0

Musi być nowy; Zajmuję się programowaniem na Firefoxie i ten nagłówek zdecydowanie nie został wysłany z Firefoksa w zeszłym roku. – user193130

Odpowiedz

244

Krótka odpowiedź: to ściśle związane z nagłówka Content-Security-Policy: upgrade-insecure-requests odpowiedzi, wskazujące, że przeglądarka go obsługuje (a w rzeczywistości woli to).

Zajęło mi to 30 min. Googling, ale w końcu znalazłem go pochowany w specyfikacji W3.

Zamieszanie przychodzi ponieważ nagłówek w spec był HTTPS: 1, a to jest jak Chrom realizowane, ale po tym broke lots of websites that were poorly coded (szczególnie WordPress i woocommerce) zespół Chromium przeprosił:

„Przepraszam za złamanie, najwyraźniej nie doceniłem wpływu na podstawie informacji zwrotnej podczas tworzenia wersji beta i wersji beta ".
- Mike West w Chrome Issue 501842

ich ustalić było zmienić jego nazwę na Upgrade-Insecure-Requests: 1 i spec od tego czasu został zaktualizowany do meczu.

W każdym razie, oto wyjaśnienie od the W3 spec (as it appeared at the time) ...

Pole żądanie nagłówek HTTPS HTTP wysyła sygnał do serwera wyrażając preferencji klienta dla nieszyfrowanie odpowiedzi i że może z powodzeniem obsługiwać Dyrektywy upgrade-niepewny-wnioski w celu dokonania ta preferencja jest tak płynna, jak to tylko możliwe.

...

Gdy serwer napotka tę preferencję w nagłówkach żądania HTTP, należy przekierować użytkownika do potencjalnie bezpiecznego reprezentacji żądanego zasobu.

Gdy serwer napotka tę preferencję w nagłówku żądania HTTPS, POWINNA zawierać nagłówek Strict-Transport-Security w odpowiedzi, jeśli host żądania jest HSTS-safe lub warunkowo HSTS-safe [RFC6797].

+1

Nie mogę tego zrozumieć. Jestem 'a.com' i przekierowuję Cię do' b.com', jednocześnie przekazując ten nagłówek 'b.com' i wysyłając trochę informacji. Jeśli nie jesteś pod bezpiecznym kanałem do 'b.com', może to już zaatakować atak, ponieważ wysłałem dane do' b.com' obok mojej prośby. Czy poprowadzisz nas do prostego scenariusza, w jaki sposób zwiększa bezpieczeństwo połączeń dla użytkowników? –

+0

@SaeedNeamati W bardzo surowej perspektywie nie czyni nic bardziej bezpiecznego. Jeśli masz normalne wymagania bezpieczeństwa, musisz się najpierw połączyć przez HTTPS i nie polegać na tym. Biorąc to pod uwagę, opisałbym to w kontekście idei "Zaufania przy pierwszym użyciu" (https://en.wikipedia.org/wiki/Trust_on_first_use) ", które * pomaga * pasywnie. – tne

+1

Widzę to bardziej jako pożądanie klienta niż narzędzie bezpieczeństwa. Jest jak nagłówek "DNT", serwer może go zignorować, ale jednocześnie wyraża wolę klienta. – DUzun

0

To wyjaśnia całą sprawę:

HTTP Content-Security-Policy (CSP) upgrade-niebezpieczne-żądań dyrektywa nakazuje aplikacjom klienckim traktować wszystkie witryny w niepewnych adresów URL (te podawane przez HTTP), jakby zostały zastąpione bezpiecznymi adresami URL (obsługiwane przez HTTPS). Ta dyrektywa jest przeznaczona dla stron internetowych z dużą liczbą niezabezpieczonych adresów URL starszego typu, które muszą zostać przepisane na .

Dyrektywa o błędach wymagających uaktualnienia jest oceniana przed blokowaniem wszystkich treści mieszanych, a jeśli jest ustawiona, ta ostatnia jest efektywnie równa no-op. Zaleca się ustawienie jednej dyrektywy lub drugiej, ale nie obu.

Dyrektywa upgrade-niezabezpieczone-wnioski nie zapewni, że użytkownicy odwiedzają witryny poprzez linki na stronach osób trzecich zostaną przeniesieni do HTTPS dla nawigacji najwyższego poziomu, a tym samym nie zastępuje Strict z transportem Nagłówek bezpieczeństwa (HSTS), który nadal powinien być ustawiony na z odpowiednią wartością maksymalnego wieku, aby zapewnić, że użytkownicy nie będą podlegać atakom na stripping SSL.

Źródło: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests