Było wiele dyskusji podczas gdy ja szukałem, jak zrobić całą moją stronę https. Większość odpowiedzi polegała na przekierowaniu http na https (plik .htaccess), co nie jest dobre, ponieważ nie jest dobrze wykonywać dwukrotnie tę samą pracę (dwa żądania). Ponadto „człowiek w środku” najpierw korzysta z http i chcę, aby moja strona działała bezpośrednio na https. Czy istnieje inny sposób, aby cała witryna była https i jak to zrobić? Na przykład, gdy użytkownik wpisze w example.com, ten example.com automatycznie przechodzi do https, bez przekierowywania z http lub czegokolwiek innego?
14
Odpowiedzi:
Nie. Nie możesz magicznie sprawić, że przeglądarka użytkownika wybierze odpowiedni protokół. Przekierowanie jest na to sposobem.
źródło
http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security pozwala Twojemu serwerowi wskazać, że dostęp do domeny można uzyskać tylko przez HTTPS. Dotyczy to tylko kolejnych żądań, więc wystąpiłoby wstępne ładowanie HTTP, ale przyszłe żądania ładowałyby HTTPS, nawet gdyby ktoś wyraźnie wpisał HTTP.
IE jeszcze go nie obsługuje, ale wszystkie inne główne go obsługują.
źródło
Jak powiedzieli inni, nie można zmusić użytkowników do wyboru właściwego protokołu. Ale kiedy użytkownik próbuje użyć HTTP, co należy zrobić? Przekierowanie jest również niewystarczające, ponieważ atakujący siedzący między tobą a klientem może przechwycić przekierowanie, więc klient nigdy go nie widzi. Klient będzie nadal wysyłał zwykły HTTP, a atakujący usunie warstwę SSL z serwera ( atak polegający na usunięciu SSL ).
Jedynym pewnym sposobem, aby temu zapobiec, jest w ogóle nie obsługiwać HTTP . Nie odpowiadaj na porcie 80, może z wyjątkiem wyświetlenia zwykłej strony tekstowej, w której użytkownik powinien spróbować ponownie za pomocą HTTPS (ale nie podaje linku, którym atakujący mógłby manipulować). Zmusi to użytkownika do wpisania się
https://
w przeglądarce, więc zainicjuje połączenie za pomocą protokołu SSL i zapobiegnie atakowi MITM.źródło
https://
. Zamiast tego powiedzą „huh, witryna jest zepsuta” i odejdą. Najlepszym scenariuszem może byćwww.example.com
odpowiedź zarówno na HTTP, jak i HTTPS, ale sama aplikacja działa na czymś takim jakadmin.example.com
tylko HTTPS.Nie do końca prawda: jak używać DNS / nazw hostów lub innych sposobów rozwiązania określonego adresu IP: Port
Jest sposób, ale większość przeglądarek nie implementuje rfc2782.
źródło
ceejayoz ma najlepszą odpowiedź, aby zapobiec konkretnie wspomnianemu atakowi tutaj, ale chcę również zwrócić uwagę na to, że brakuje tutaj wielu ludzi, a mianowicie, że HTTP ma już ustaloną drugą część. Chcesz wykonać stałe przekierowanie 301. Mówi to klientowi, aby wysyłał dalsze żądania na nowy adres. Tak więc, jeśli ktoś wpisze niewłaściwy adres URL, złoży 2 żądania, ALE w przyszłości dobry klient powinien wykryć żądania do tego adresu URL i zamiast tego złożyć prawidłowe żądanie, aby zapobiec dalszym zmarnowanym żądaniom. Problem polega na tym, że dotyczy to tylko tego dokładnego adresu URL. HSTS ulepsza ten schemat, mówiąc również: „przez następne n sekund nie zezwalaj również na żadne niezabezpieczone połączenia z tej domeny”.
Użytkownicy nie powinni odwiedzać wrażliwych witryn w niepewnych lokalizacjach. W szczególności nie powinni zapisywać się na nie w niepewnych lokalizacjach. Są to podstawowe zasady bezpieczeństwa użytkowników, których należy uczyć: „nie otwieraj załączników z niezaufanych źródeł”. Które są naprawdę najlepszą odpowiedzią na zapobieganie atakom MiM na strony, które nigdy nie były odwiedzane.
Na marginesie, niektóre przeglądarki poprawiają to, mówiąc, że niektóre znane strony zawsze używają HSTS. Niestety nie możesz łatwo po prostu dodać się do tej listy.
Dalsza lektura: http://coderrr.wordpress.com/2010/12/27/canonical-redirect-pitfalls-with-http-strict-transport-security-and-some-solutions/
http://dev.chromium.org/sts
źródło