Dane uwierzytelniające podstawowe HTTP przekazywane w adresie URL i szyfrowaniu

250

Mam pytanie dotyczące poświadczeń HTTPS i HTTP.

Załóżmy, że zabezpieczam adres URL za pomocą uwierzytelniania HTTP:

<Directory /var/www/webcallback>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /var/www/passwd/passwords
Require user gooduser
</Directory>

Następnie uzyskuję dostęp do tego adresu URL ze zdalnego systemu za pośrednictwem protokołu HTTPS, przekazując poświadczenia w adresie URL:

https://gooduser:[email protected]/webcallback?foo=bar

Czy nazwa użytkownika i hasło będą automatycznie szyfrowane SSL? Czy to samo dotyczy GET i POST? Trudno mi znaleźć wiarygodne źródło tych informacji.

rcourtna
źródło
Bardzo stare pytanie, ale mimo to: to podejście zostało wycofane przez ietf.org/rfc/rfc3986.txt : „Użycie formatu„ użytkownik: hasło ”w polu informacja użytkownika jest przestarzałe.”
Madbreaks

Odpowiedzi:

237

Czy nazwa użytkownika i hasło będą automatycznie szyfrowane SSL? To samo dotyczy GET i POST

Tak tak tak.

Cała komunikacja (z wyjątkiem wyszukiwania DNS, jeśli adres IP nazwy hosta nie jest jeszcze buforowany) jest szyfrowana, gdy używany jest protokół SSL.

Quentin
źródło
25
+1. Pliki GET i POST, w tym adres URL, są szyfrowane. Dodam tylko - narzędzia takie jak Firebug i dane Sabotażu są w stanie wyświetlać nieszyfrowane wyniki tylko dlatego, że są częścią przeglądarki i dlatego są w stanie przechwycić żądanie, zanim zostanie zaszyfrowane. Po wysłaniu za pośrednictwem drutu wszystko jest szyfrowane.
Sripathi Krishnan
21
Żeby było jasne, wszystko oprócz domeny jest szyfrowane. Jeśli ktoś potyka się na ten i chciałby bardziej szczegółową odpowiedź, patrz answers.google.com/answers/threadview/id/758002.html
rcourtna
7
Ze względu na kompletność „ Internet Explorer nie obsługuje nazw użytkowników i haseł w adresach witryn sieci Web (adresy URL HTTP lub HTTPS) ” Wygląda na to, że tylko wersje Internet Explorer od 3.0 do 6.0 obsługują następującą składnię dla adresów URL HTTP lub HTTPS: http (s): //username:password@server/resource.ext Uwaga: Ta zmiana domyślnego zachowania nie wpływa na inne protokoły. Na przykład nadal możesz dołączyć informacje o użytkowniku do adresu URL FTP po zainstalowaniu aktualizacji zabezpieczeń 832894.
Łukasz
odpowiedź ta nie zawiera żadnego wiarygodnego źródła ani dalszych wyjaśnień.
Jens Piegsa,
26

Tak, zostanie zaszyfrowany.

Zrozumiesz to, jeśli po prostu sprawdzisz, co dzieje się za kulisami.

  1. Przeglądarka lub aplikacja najpierw rozdzieli adres URL i spróbuje uzyskać adres IP hosta za pomocą zapytania DNS. tzn. zostanie wysłane żądanie DNS w celu znalezienia adresu IP domeny (www.example.com). Należy pamiętać, że żadne inne informacje nie zostaną wysłane za pośrednictwem tego żądania.
  2. Przeglądarka lub aplikacja zainicjuje połączenie SSL z adresem IP otrzymanym z żądania DNS. Certyfikaty zostaną wymienione, a dzieje się to na poziomie transportu. W tym momencie nie zostaną przesłane żadne informacje na poziomie aplikacji. Pamiętaj, że uwierzytelnianie podstawowe jest częścią HTTP, a HTTP to protokół na poziomie aplikacji. Nie zadanie warstwy transportowej.
  3. Po ustanowieniu połączenia SSL niezbędne dane zostaną przesłane do serwera. tj .: ścieżka lub adres URL, parametry i podstawowa nazwa użytkownika i hasło uwierzytelniania.
Ruchira Randana
źródło
-5

Niekoniecznie prawda. Zostanie zaszyfrowany na kablu, ale nadal będzie wylądował w dziennikach jako zwykły tekst

Brandon
źródło
17
Jaki serwer WWW rejestruje nazwę użytkownika i hasło z żądań? To byłoby piekło niepewnego serwera WWW.
Andrew Barber
1
Tak, to po prostu nieprawda. Prawdopodobnie można poinstruować apache, aby rejestrował te informacje, ale z pewnością nie robi tego domyślnie.
DougW,
27
@Brandon prawdopodobnie myślał „w adresie URL” w ciągu zapytania (np.? Użytkownik = bob i pw = 123hackmeplz). Może to skończyć się w logach serwera.
Mike Graf
5
Powiązane: „Gdy wywołasz ten adres URL na kliencie np. Za pomocą curl, nazwa użytkownika i hasło będą wyraźnie widoczne na liście procesów i mogą pojawić się w pliku historii bash.” - stackoverflow.com/a/4981309
Hawkeye Parker
1
@ zb226 pytający konkretnie wspomniał o podaniu poświadczeń w adresie URL.
Lambart