Chrome ostrzega mnie, że moje połączenie nie jest bezpieczne podczas uwierzytelniania w SEDE za pomocą konta Google

Dec 13 2020

Kiedy przechodzę do strony logowania Stack Exchange Data Explorer tutaj i klikam przycisk Zaloguj się za pomocą Google , nie loguję się, ale zamiast tego wita mnie wiadomość Chrome chroniąca moją prywatność:

Informacje, które zamierzasz przesłać, nie są bezpieczne Ponieważ witryna korzysta z połączenia, które nie jest całkowicie bezpieczne, Twoje informacje będą widoczne dla innych.

Jestem prawie pewien, że zadziałało to wczoraj bez pokazania mi tego ostrzeżenia, więc albo Chrome stał się bardziej rygorystyczny z dnia na dzień, albo nastąpiła zmiana konfiguracji w SEDE, ponieważ wersja jest nadal na 2020.8.27.79 (kiedy moje żądania ściągnięcia zostaną wdrożone?).

Kiedy sprawdzam ruch sieciowy w konsoli programisty, widzę:

  • URL żądania POST: https://data.stackexchange.com/user/authenticate
    • odpowiedź: 302 z nagłówkiem lokalizacji: https://accounts.google.com/o/oauth2/auth?client_id=[blah]&scope=openid+email&redirect_uri=http%3a%2f%2fdata.stackexchange.com%2f[more blah]&response_type=code

A potem następne połączenie zostaje zablokowane, gdy 302 powraca (uważni czytelnicy widzieli to nadchodzące):

  • POBIERZ URL żądania: https://accounts.google.com/o/oauth2/auth?client_id=[blah]&scope=openid+email&redirect_uri=http%3a%2f%2fdata.stackexchange.com%2f[more blah]&response_type=code
    • Odpowiedź 302: Lokalizacja: http://data.stackexchange.com/user/oauth/google?state=[blah]&code=[more blag]&scope=email+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=none

Ten ostatni nagłówek lokalizacji używa protokołu HTTP zamiast protokołu HTTPS.

Czy można to zmienić, aby trasa POST w / user / authentication korzystała z bezpiecznego protokołu zamiast zwykłego HTTP?

W jakiś sposób spodziewam się, że ten wiersz w AccountController.cs zwróci teraz coś innego:

private string BaseUrl => Current.Request.Url.Scheme + "://" + Current.Request.Url.Host;

ponieważ ten BaseUrl zostanie dodany jako redirect_uri tutaj

Jeśli nadrzędny serwer proxy przejął odciążanie SSL, może się zdarzyć, że Current.Request.Url.Schemenie zwraca już protokołu HTTPS, od którego zacząłem. Ale może inne przyczyny sprawiają, że schemat nie jest tym, czym był kiedyś.

Wydaje się, że jestem jedyną osobą, która może to odtworzyć w Chrome, a nawet jeśli jest to tylko lokalne dla mojego komputera, nadal wydaje się dobrą radą, aby z wyprzedzeniem naprawić potencjalne zagrożenia bezpieczeństwa, zamiast czekać, aż coś zostanie nadużywane.

Jeśli zaakceptuję ryzyko i kontynuuję, jestem pomyślnie zalogowany.

Odpowiedzi

8 NickCraver Dec 14 2020 at 04:44

Fix do tego został wdrożony - Dziękujemy za zgłoszenie i oczu na PR, jak również!

Uwagi: tak, jak podejrzewasz, zakończyliśmy TLS w module równoważenia obciążenia, a wbudowane bity sieciowe ASP nie odczytywały poprawnie nagłówków za tym. W .NET Core jest to rozwiązane, ale Stack Exchange Data Explorer nie jest jeszcze na tym i nie mamy czasu przeznaczonego na wykonanie tej pracy w tym momencie.

5 Luuklag Dec 13 2020 at 16:41

Reprodukcja przeze mnie.

Po raz pierwszy, kiedy zarejestrowałem się za pomocą Google, wszystko poszło dobrze.

Następnie wylogowałem się, a po zalogowaniu się za pomocą właśnie zarejestrowanego konta Google powitał mnie następujący komunikat (w języku holenderskim):

De gegevens die je wilt sturen, zijn niet beveiligd Omdat de site een verbinding gebruikt die niet volledig is beveiligd, zijn je gegevens zichtbaar voor anderen.

To ta sama wiadomość, którą Rene zamieściła w pytaniu.

Korzystanie z Chrome na Androidzie.

1 Ollie Dec 14 2020 at 03:46

Reprodukowane przeze mnie również. Nie tylko logowanie Google jest niestabilne, ale kliknięcie przycisku „Zaloguj się przy użyciu przepełnienia stosu” również powoduje wyświetlenie tego błędu:

Zalogowany lub wylogowany z mojego konta Google.