Gdybym konfigurował serwer i miał certyfikat (y) SSL, dlaczego nie miałbym używać HTTPS dla całej witryny zamiast tylko do zakupów / logowania? Myślę, że bardziej sensowne byłoby po prostu zaszyfrowanie całej witryny i całkowite zabezpieczenie użytkownika. Zapobiegnie to problemom, takim jak podjęcie decyzji, co należy zabezpieczyć, ponieważ wszystko byłoby, i nie jest to tak naprawdę niedogodność dla użytkownika.
Gdybym już korzystał z protokołu HTTPS dla części witryny, dlaczego nie miałbym go używać w całej witrynie?
To jest pytanie pokrewne: Dlaczego https jest używany tylko do logowania? , ale odpowiedzi nie są satysfakcjonujące. Odpowiedzi zakładają, że nie udało Ci się zastosować protokołu HTTPS w całej witrynie.
Odpowiedzi:
Przychodzi mi do głowy kilka powodów.
źródło
t buy this explanation. 1) Don
używam przeglądarki, która w 2013 roku nie obsługuje SSL. 2) Nawet Google używa teraz SSL 3) Prawidłowo skonfiguruj, możesz przekierować ruch http na właściwy link https.Oprócz innych powodów (szczególnie związanych z wydajnością) możesz hostować tylko jedną domenę na jeden adres IP * podczas korzystania z protokołu HTTPS.
Pojedynczy serwer może obsługiwać wiele domen w protokole HTTP, ponieważ nagłówek HTTP serwera informuje serwer, z której domeny ma odpowiedzieć.
W przypadku protokołu HTTPS serwer musi zaoferować klientowi swój certyfikat podczas wstępnego uzgadniania protokołu TLS (czyli przed uruchomieniem protokołu HTTP). Oznacza to, że nagłówek serwera nie został jeszcze wysłany, więc serwer nie ma sposobu, aby dowiedzieć się, która domena jest żądana i który certyfikat (www.foo.com lub www.bar.com) ma odpowiedzieć.
* Przypis: z technicznego punktu widzenia możesz hostować wiele domen, jeśli hostujesz je na różnych portach, ale zazwyczaj nie jest to możliwe. Możesz także hostować wiele domen, jeśli Twój certyfikat SSL zawiera symbol wieloznaczny. Na przykład możesz hostować zarówno foo.example.com, jak i bar.example.com z certyfikatem * .example.com
źródło
SSL / TLS nie jest używany wystarczająco często. HTTPS musi być używany przez całą sesję , w żadnym momencie nie można przesyłać identyfikatora sesji przez HTTP. Jeśli używasz protokołu HTTPS tylko do logowania, to w oczywisty sposób naruszasz 10 najlepszych OWASP na rok 2010 „A3: Uszkodzone uwierzytelnianie i zarządzanie sesjami”.
źródło
document.cookie
aby osoba atakująca mogła użyć jej do uwierzytelnienia. Wartość tę można również uzyskać poprzez podsłuchiwanie ruchu, który zatrzymuje https. Nie jestem do końca pewien, o co ci chodzi.Dlaczego nie wysłać każdego listu pocztowego w zabezpieczonej przed fałszerstwami, nieprzezroczystej kopercie listem poleconym? Ktoś z urzędu pocztowego zawsze miałby nad tym osobistą opiekę, więc możesz być prawie pewien, że nikt nie podsłuchuje Twojej poczty. Oczywiście odpowiedź jest taka, że chociaż część poczty jest warta swojej ceny, większość nie jest. Nie obchodzi mnie, czy ktoś przeczyta moje „Cieszę się, że wyszedłeś z więzienia!” pocztówka do wujka Joe.
Szyfrowanie nie jest darmowe i nie zawsze pomaga.
Jeśli sesja (taka jak zakupy, bankowość itp.) Zakończy się przy użyciu HTTPS, nie ma powodu, aby nie wykonywać całej sesji HTTPS tak wcześnie, jak to możliwe.
Moim zdaniem HTTPS powinien być używany tylko wtedy, gdy jest to nieuniknione konieczne, ponieważ żądanie lub odpowiedź muszą być zabezpieczone przed pośrednim podsłuchiwaniem. Jako przykład spójrz na Yahoo! strona główna. Mimo że jesteś zalogowany, większość interakcji będzie odbywać się za pośrednictwem protokołu HTTP. Uwierzytelniasz przez HTTPS i otrzymujesz pliki cookie, które potwierdzają Twoją tożsamość, więc nie potrzebujesz HTTPS do czytania wiadomości.
źródło
You authenticate over HTTPS and get cookies that prove your identity, so you don't need HTTPS to read news stories.
To nie jest właściwy sposób obsługi uwierzytelniania sesji. Pliki cookie należy ustawić z flagą SECURE. Ale pomijając przez chwilę tę okropną poradę dotyczącą bezpieczeństwa ... Twoja analogia do poczty nie jest tak naprawdę dokładna z kilku powodów. Jedną z nich jest to, że zazwyczaj nie można wstrzykiwać exploitów do poczty zwrotnej, bezkarnie podszywać się pod kogoś innego lub wrzucić wiadomość „Twoja sesja wygasła” do poczty zwrotnej, aby ponownie wprowadzić dane uwierzytelniające, których używają w Yahoo! i ich banku.Największym powodem, poza obciążeniem systemu, jest to, że łamie wirtualny hosting oparty na nazwach. Z SSL to jedna witryna - jeden adres IP. Jest to dość drogie, a także trudniejsze w zarządzaniu.
źródło
W przypadku łączy o dużym opóźnieniu początkowe uzgadnianie TLS wymaga dodatkowych podróży w obie strony w celu sprawdzenia łańcucha certyfikatów (w tym wysłania wszelkich certyfikatów pośrednich), uzgodnienia mechanizmów szyfrowania i ustanowienia sesji. Po ustanowieniu sesji kolejne żądania mogą wykorzystywać buforowanie sesji w celu zmniejszenia liczby obiegów w obie strony, ale nawet w tym najlepszym przypadku nadal jest więcej połączeń w obie strony niż wymaga normalne połączenie HTTP. Nawet jeśli operacje szyfrowania były bezpłatne, podróże w obie strony nie są i mogą być dość zauważalne w przypadku wolniejszych łączy sieciowych, zwłaszcza jeśli witryna nie wykorzystuje potoków http. Nie stanowi to problemu dla użytkowników szerokopasmowych w dobrze połączonym segmencie sieci. Jeśli prowadzisz działalność międzynarodową, wymaganie protokołu HTTPS może łatwo spowodować zauważalne opóźnienia.
Istnieją dodatkowe kwestie, takie jak utrzymanie stanu sesji na serwerze, wymagające potencjalnie znacznie większej ilości pamięci i oczywiście operacji szyfrowania danych. Każda mała witryna praktycznie nie musi się martwić ani o dane możliwości serwera, ani o koszt dzisiejszego sprzętu. Każda duża witryna z łatwością mogłaby pozwolić sobie na odciążenie procesora / w AES lub dodatkowe karty, aby zapewnić podobną funkcjonalność.
Wszystkie te problemy stają się coraz bardziej nieistotne w miarę upływu czasu i ulepszania możliwości sprzętu i sieci. W większości przypadków wątpię, czy dzisiaj jest jakaś namacalna różnica.
Mogą istnieć względy operacyjne, takie jak ograniczenia administracyjne w ruchu https (pomyśl o pośrednich filtrach zawartości… i tak dalej), ewentualnie niektóre regulacje korporacyjne lub rządowe. Niektóre środowiska korporacyjne wymagają odszyfrowania danych na obrzeżach, aby zapobiec wyciekowi informacji ... interferencji z hotspotami i podobnymi systemami dostępu opartymi na sieci, które nie są zdolne do wstrzykiwania wiadomości w transakcjach https. Pod koniec dnia, moim zdaniem, powody, dla których domyślnie nie korzystamy z protokołu HTTPS, będą prawdopodobnie dość małe.
źródło
Protokół https wymaga więcej zasobów niż zwykły protokół http.
Wymaga więcej zarówno od serwerów, jak i od klientów.
źródło
Jeśli cała sesja jest zaszyfrowana, nie będziesz mógł używać buforowania dla statycznych zasobów, takich jak obrazy i js na poziomie proxy, np. ISP.
źródło
Powinieneś używać protokołu HTTPS wszędzie, ale stracisz:
Zdecydowanie nie powinieneś używać kompresji SSL ani kompresji HTTP przez SSL z powodu ataków typu BREACH i CRIME. Nie ma więc kompresji, jeśli twoja odpowiedź zawiera identyfikatory sesji lub csrf. Możesz temu zaradzić, umieszczając swoje statyczne zasoby (obrazy, js, css) w domenie bez plików cookie i używając tam kompresji. Możesz także użyć minifikacji HTML.
Jeden certyfikat SSL, jeden adres IP, chyba że korzystasz z SNI, który nie działa na wszystkich przeglądarkach (stary Android, Blackberry 6 itd.).
Nie powinieneś umieszczać na swoich stronach żadnych treści zewnętrznych, które nie są przesyłane przez SSL.
Utracisz wychodzący nagłówek HTTP Referer, gdy przeglądarka przechodzi na stronę HTTP, co może, ale nie musi, stanowić dla Ciebie problem.
źródło
Cóż, oczywistym powodem jest wydajność: wszystkie dane będą musiały zostać zaszyfrowane przez serwer przed transmisją, a następnie odszyfrowane przez klienta po otrzymaniu, co jest stratą czasu, jeśli nie ma danych wrażliwych. Może też wpływać na ilość pamięci podręcznej witryny.
Jest to również potencjalnie mylące dla użytkowników końcowych, jeśli wszystkie adresy używają,
https://
a nie znajomychhttp://
. Zobacz również tę odpowiedź:Dlaczego nie zawsze używać protokołu HTTPS podczas dołączania pliku js?
źródło
Protokół https wymaga od serwera szyfrowania i odszyfrowywania żądań i odpowiedzi klientów. Wpływ na wydajność będzie się sumował, jeśli serwer obsługuje wielu klientów. Dlatego większość obecnych implementacji protokołu HTTPS ogranicza się tylko do uwierzytelniania hasłem. Ale wraz ze wzrostem mocy obliczeniowej może się to zmienić, w końcu Gmail używa SSL dla całej witryny.
źródło
Oprócz odpowiedzi WhirlWind należy wziąć pod uwagę koszt i zastosowanie certyfikatów SSL, problemy z dostępem (jest możliwe, choć mało prawdopodobne, że klient może nie być w stanie komunikować się przez port SSL) itp.
Korzystanie z SSL nie jest gwarantem bezpieczeństwa. Ten rodzaj ochrony należy wbudować w architekturę aplikacji, a nie próbować polegać na jakimś magicznym pocisku.
źródło
Powiedziano mi, że w jednym projekcie w naszej firmie odkryli, że przepustowość zajmowana przez wiadomości SSL była znacznie większa niż w przypadku zwykłych wiadomości. Myślę, że ktoś powiedział mi, że to zdumiewające 12 razy więcej danych. Sam tego nie zweryfikowałem i brzmi to bardzo wysoko, ale jeśli do każdej strony jest dodany jakiś nagłówek, a większość stron ma niewielką ilość treści, może to nie być tak daleko.
To powiedziawszy, kłopot z przechodzeniem między http i https i śledzeniem, które strony są, co wydaje mi się zbyt dużym wysiłkiem. Tylko raz próbowałem zbudować witrynę, która je pomieszała i ostatecznie porzuciliśmy ten plan, gdy wpadliśmy na złożone rzeczy, takie jak wyskakujące okienka utworzone przez Javascript, w którym został dołączony niewłaściwy protokół i tego typu rzeczy. Skończyło się na tym, że cała witryna https była mniej kłopotliwa. Wydaje mi się, że w prostych przypadkach, gdy masz tylko ekran logowania i ekran płatności, które muszą być chronione i są to proste strony, łączenie i dopasowywanie nie byłoby wielkim problemem.
Nie martwiłbym się zbytnio o obciążenie klienta związane z odszyfrowaniem. Zwykle klient będzie spędzał dużo więcej czasu na oczekiwaniu na przesyłanie danych, niż na ich przetworzenie. Dopóki użytkownicy rutynowo nie mają połączeń internetowych o prędkości gigabitowej na sekundę, moc przetwarzania klienta prawdopodobnie nie ma znaczenia. Innym problemem jest moc procesora wymagana przez serwer do szyfrowania stron. Mogą istnieć problemy z tym, że nie jest w stanie nadążyć za setkami lub tysiącami użytkowników.
źródło
Jeszcze jeden mały punkt (może ktoś może zweryfikować), jeśli użytkownik wpisze dane w elemencie formularza, takim jak pole tekstowe, a następnie z jakiegoś powodu odświeży stronę lub serwer ulegnie awarii na sekundę, dane wprowadzone przez użytkownika zostaną utracone za pomocą HTTPS, ale jest zachowywany przy użyciu protokołu HTTP.
Uwaga: nie jestem pewien, czy jest to specyficzne dla przeglądarki, ale z pewnością dzieje się tak w mojej przeglądarce Firefox.
źródło
Windows Server 2012 z IIS 8.0 oferuje teraz SNI, które jest wskazaniem nazwy serwera, które umożliwia hostowanie wielu aplikacji internetowych SSL w usługach IIS pod jednym adresem IP.
źródło