Mam forum, na którym, podobnie jak większość forów, użytkownicy mogą zamieszczać zdjęcia. Skonfigurowałem HTTPS w całej witrynie, ale oczywiście większość obrazów zewnętrznych jest połączonych za pomocą HTTP, a nie HTTPS. Tak więc ładowanie forum przez HTTPS pokazuje ostrzeżenia o mieszanej zawartości itp.
Jakie są strategie rozwiązania tego problemu? Niektóre obrazy pochodzą z mojej własnej witryny, więc mogę przepisać te adresy URL, aby używać HTTPS, ponieważ wiem, że to zadziała. Ale w przypadku zewnętrznych adresów URL wiele nie działa z HTTPS, więc nie mogę przepisać koców.
Mógłbym przepisać niezabezpieczone obrazy na linki zamiast obrazów wbudowanych, ale to nie wygląda świetnie i może być mylące dla użytkowników. Jakieś lepsze rozwiązania?
src="http://someimage.jpg"
skierowane do struktury względnejsrc="//someimage.jpg"
zamiast ... lub po prostu ją zweryfikować. Jeśli chcesz ścisłego zielonego zamka (w którym niepewny obraz nie zadziała), wymusz HSTS. Następnie w interfejsie edytora zwróć uwagę, że obrazy muszą być obecnie dostępne za pośrednictwem HTTPS, w przeciwnym razie w ogóle się nie pojawią. Coś w stylu „Ups, popełniłeś błąd. Aby zapobiec nadużyciom i atakom MITM, wszystkie media muszą korzystać z HTTPS. Wróć i popraw je lub wybierz innego dostawcę obrazu”.Odpowiedzi:
Nie można mieć niebezpiecznych zasobów na bezpiecznej stronie i nie wyświetlać ostrzeżenia o mieszanej zawartości.
W przypadku agentów użytkownika, które ją obsługują,
upgrade-insecure-requests
dyrektywa jest instrukcją, aby spróbować załadować zasób przez https lub nie powiodło się.Inne programy użytkownika zignorują dyrektywę, kontynuując ładowanie niepewnych zasobów.
Oto artykuł na stronie Google Developers omawiający tę i inne opcje.
źródło
Właśnie zdałem sobie sprawę, że nigdy nie opublikowałem mojego rozwiązania. Odpowiedź zawarte w komentarzu Stefana właśnie rozwiązać go dla mnie. Krótko mówiąc, utworzyłem skrypt proxy, który wykonuje następujące czynności:
http://example.com/imgproxy?img=ORIGINALURL&hash=KEY
Następnie skrypt proxy pobiera obraz HTTP, buforuje go lokalnie i wysyła dane obrazu. Przy powtarzających się żądaniach wysyła bezpośrednio buforowane dane. Połączona odpowiedź SO opisuje skrót bezpieczeństwa i inne szczegóły.
źródło